@modern-js/prod-server 1.1.10-beta.0 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,23 @@
1
1
  # @modern-js/prod-server
2
2
 
3
+ ## 1.2.0
4
+
5
+ ### Minor Changes
6
+
7
+ - 3d64b2f: feat: prod-server supports that load server env from .env.\*
8
+
9
+ feat: prod-server 支持从 .env.\* 文件加载服务器环境变量
10
+
11
+ ### Patch Changes
12
+
13
+ - 7b902b3: feat: support ListenOptions for prod-server
14
+
15
+ feat: server 支持传入 listernOptions 参数
16
+
17
+ - Updated dependencies [a27ab8d]
18
+ - @modern-js/server-core@1.4.1
19
+ - @modern-js/utils@1.7.12
20
+
3
21
  ## 1.1.9
4
22
 
5
23
  ### Patch Changes
@@ -5,8 +5,9 @@ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { va
5
5
  function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
6
6
 
7
7
  import path from 'path';
8
+ import fs from 'fs';
9
+ import { Logger, SHARED_DIR, OUTPUT_CONFIG_FILE, dotenv, dotenvExpand } from '@modern-js/utils';
8
10
  import { serverManager, AppContext, ConfigContext, loadPlugins } from '@modern-js/server-core';
9
- import { Logger, SHARED_DIR, OUTPUT_CONFIG_FILE } from '@modern-js/utils';
10
11
  import { metrics as defaultMetrics } from "../libs/metrics";
11
12
  import { loadConfig, getServerConfigPath, requireConfig } from "../libs/loadConfig";
12
13
  import { debug } from "../utils";
@@ -34,6 +35,7 @@ export class Server {
34
35
  }
35
36
  /**
36
37
  * 初始化顺序
38
+ * - 读取 .env.{process.env.MODERN_ENV} 文件,加载环境变量
37
39
  * - 获取 server runtime config
38
40
  * - 设置 context
39
41
  * - 创建 hooksRunner
@@ -51,6 +53,7 @@ export class Server {
51
53
  const {
52
54
  options
53
55
  } = this;
56
+ this.loadServerEnv(options);
54
57
  this.initServerConfig(options);
55
58
  await this.injectContext(this.runner, options); // initialize server runner
56
59
 
@@ -128,22 +131,18 @@ export class Server {
128
131
  }
129
132
 
130
133
  listen(options, listener) {
131
- if (typeof options === 'object') {
132
- this.app.listen(options, () => {
133
- if (listener) {
134
- listener();
135
- }
134
+ const callback = () => {
135
+ if (listener) {
136
+ listener();
137
+ }
136
138
 
137
- this.server.onListening(this.app);
138
- });
139
- } else {
140
- this.app.listen(process.env.PORT || options || 8080, () => {
141
- if (listener) {
142
- listener();
143
- }
139
+ this.server.onListening(this.app);
140
+ };
144
141
 
145
- this.server.onListening(this.app);
146
- });
142
+ if (typeof options === 'object') {
143
+ this.app.listen(options, callback);
144
+ } else {
145
+ this.app.listen(process.env.PORT || options || 8080, callback);
147
146
  }
148
147
  }
149
148
 
@@ -214,4 +213,19 @@ export class Server {
214
213
  };
215
214
  }
216
215
 
216
+ loadServerEnv(options) {
217
+ const {
218
+ pwd: appDirectory
219
+ } = options;
220
+ const serverEnv = process.env.MODERN_ENV;
221
+ const serverEnvPath = path.resolve(appDirectory, `.env.${serverEnv}`);
222
+
223
+ if (serverEnv && fs.existsSync(serverEnvPath) && !fs.statSync(serverEnvPath).isDirectory()) {
224
+ const envConfig = dotenv.config({
225
+ path: serverEnvPath
226
+ });
227
+ dotenvExpand(envConfig);
228
+ }
229
+ }
230
+
217
231
  }
@@ -7,10 +7,12 @@ exports.Server = void 0;
7
7
 
8
8
  var _path = _interopRequireDefault(require("path"));
9
9
 
10
- var _serverCore = require("@modern-js/server-core");
10
+ var _fs = _interopRequireDefault(require("fs"));
11
11
 
12
12
  var _utils = require("@modern-js/utils");
13
13
 
14
+ var _serverCore = require("@modern-js/server-core");
15
+
14
16
  var _metrics = require("../libs/metrics");
15
17
 
16
18
  var _loadConfig = require("../libs/loadConfig");
@@ -50,6 +52,7 @@ class Server {
50
52
  }
51
53
  /**
52
54
  * 初始化顺序
55
+ * - 读取 .env.{process.env.MODERN_ENV} 文件,加载环境变量
53
56
  * - 获取 server runtime config
54
57
  * - 设置 context
55
58
  * - 创建 hooksRunner
@@ -67,6 +70,7 @@ class Server {
67
70
  const {
68
71
  options
69
72
  } = this;
73
+ this.loadServerEnv(options);
70
74
  this.initServerConfig(options);
71
75
  await this.injectContext(this.runner, options); // initialize server runner
72
76
 
@@ -148,22 +152,18 @@ class Server {
148
152
  }
149
153
 
150
154
  listen(options, listener) {
151
- if (typeof options === 'object') {
152
- this.app.listen(options, () => {
153
- if (listener) {
154
- listener();
155
- }
155
+ const callback = () => {
156
+ if (listener) {
157
+ listener();
158
+ }
156
159
 
157
- this.server.onListening(this.app);
158
- });
159
- } else {
160
- this.app.listen(process.env.PORT || options || 8080, () => {
161
- if (listener) {
162
- listener();
163
- }
160
+ this.server.onListening(this.app);
161
+ };
164
162
 
165
- this.server.onListening(this.app);
166
- });
163
+ if (typeof options === 'object') {
164
+ this.app.listen(options, callback);
165
+ } else {
166
+ this.app.listen(process.env.PORT || options || 8080, callback);
167
167
  }
168
168
  }
169
169
 
@@ -237,6 +237,23 @@ class Server {
237
237
  };
238
238
  }
239
239
 
240
+ loadServerEnv(options) {
241
+ const {
242
+ pwd: appDirectory
243
+ } = options;
244
+ const serverEnv = process.env.MODERN_ENV;
245
+
246
+ const serverEnvPath = _path.default.resolve(appDirectory, `.env.${serverEnv}`);
247
+
248
+ if (serverEnv && _fs.default.existsSync(serverEnvPath) && !_fs.default.statSync(serverEnvPath).isDirectory()) {
249
+ const envConfig = _utils.dotenv.config({
250
+ path: serverEnvPath
251
+ });
252
+
253
+ (0, _utils.dotenvExpand)(envConfig);
254
+ }
255
+ }
256
+
240
257
  }
241
258
 
242
259
  exports.Server = Server;
@@ -12,6 +12,7 @@ export declare class Server {
12
12
  constructor(options: ModernServerOptions);
13
13
  /**
14
14
  * 初始化顺序
15
+ * - 读取 .env.{process.env.MODERN_ENV} 文件,加载环境变量
15
16
  * - 获取 server runtime config
16
17
  * - 设置 context
17
18
  * - 创建 hooksRunner
@@ -46,4 +47,5 @@ export declare class Server {
46
47
  private createHookRunner;
47
48
  private injectContext;
48
49
  private initAppContext;
50
+ private loadServerEnv;
49
51
  }
package/package.json CHANGED
@@ -11,7 +11,7 @@
11
11
  "modern",
12
12
  "modern.js"
13
13
  ],
14
- "version": "1.1.10-beta.0",
14
+ "version": "1.2.0",
15
15
  "jsnext:source": "./src/index.ts",
16
16
  "types": "./dist/types/index.d.ts",
17
17
  "main": "./dist/js/node/index.js",
@@ -28,9 +28,9 @@
28
28
  }
29
29
  },
30
30
  "dependencies": {
31
- "@modern-js/utils": "^1.7.11",
31
+ "@modern-js/utils": "^1.7.12",
32
32
  "@babel/compat-data": "^7.17.10",
33
- "@modern-js/server-core": "^1.4.0",
33
+ "@modern-js/server-core": "^1.4.1",
34
34
  "axios": "^0.24.0",
35
35
  "compare-versions": "^3.6.0",
36
36
  "cookie": "^0.4.2",
@@ -43,8 +43,8 @@
43
43
  "ua-parser-js": "^0.7.28"
44
44
  },
45
45
  "devDependencies": {
46
- "@modern-js/types": "1.5.5",
47
- "@modern-js/core": "1.12.4",
46
+ "@modern-js/types": "1.6.0",
47
+ "@modern-js/core": "1.13.0",
48
48
  "@scripts/jest-config": "0.0.0",
49
49
  "@scripts/build": "0.0.0",
50
50
  "@types/cookie": "^0.4.1",
@@ -67,8 +67,7 @@
67
67
  },
68
68
  "publishConfig": {
69
69
  "access": "public",
70
- "registry": "https://registry.npmjs.org/",
71
- "types": "./dist/types/index.d.ts"
70
+ "registry": "https://registry.npmjs.org/"
72
71
  },
73
72
  "wireit": {
74
73
  "build": {