1 | const path = require('path');
|
2 | const fs = require('fs-extra');
|
3 |
|
4 | const defaultsServiceWorker = require('../defaults/service-worker');
|
5 |
|
6 | /**
|
7 | * 初始化 node.js 环境变量
|
8 | */
|
9 | module.exports = () => {
|
10 | const defaults = {
|
11 | // Webpack 打包项目模式
|
12 | // isomorphic 同构 | spa 单页面应用 | static 静态站点
|
13 | // 默认情况下,会在 Webpack 打包执行前根据项目配置自动决定,无需修改
|
14 | WEBPACK_BUILD_TYPE: 'isomorphic',
|
15 |
|
16 | // Webpack 打包场景
|
17 | // client 客户端 | server 服务端
|
18 | WEBPACK_BUILD_STAGE: 'client',
|
19 |
|
20 | // Webpack 打包环境
|
21 | // dev 开发 | prod 生产
|
22 | WEBPACK_BUILD_ENV: 'dev',
|
23 |
|
24 | // Webpack 打包结果分析
|
25 | WEBPACK_ANALYZE: JSON.stringify(false),
|
26 |
|
27 | // chunkmap
|
28 | WEBPACK_CHUNKMAP: '',
|
29 |
|
30 | // 客户端开发环境 webpack-dev-server 端口号 (仅限 STAGE: client && ENV: dev)
|
31 | WEBPACK_DEV_SERVER_PORT: 3001,
|
32 |
|
33 | // 服务器端口
|
34 | SERVER_PORT: (() => {
|
35 | if (process.env.WEBPACK_BUILD_ENV === 'dev') return '3000';
|
36 | if (typeof __SERVER_PORT__ !== 'undefined') return __SERVER_PORT__;
|
37 | return '8080';
|
38 | })(),
|
39 |
|
40 | // 服务器端口 (开发环境主服务器)
|
41 | SERVER_PORT_DEV_MAIN: '3000',
|
42 |
|
43 | // Koot 版本号
|
44 | KOOT_VERSION: encodeURI(
|
45 | fs.readJSONSync(path.resolve(__dirname, '../package.json')).version
|
46 | ),
|
47 |
|
48 | // Koot 项目启动目录路径。默认为 process.cwd()
|
49 | // KOOT_CWD: process.cwd(),
|
50 |
|
51 | // Koot 项目配置文件路径 (./koot.js)。默认不存在。如果存在则默认使用
|
52 | // KOOT_PROJECT_CONFIG_FULL_PATHNAME: ...,
|
53 | // KOOT_PROJECT_CONFIG_PORTION_SERVER_PATHNAME: ...,
|
54 | // KOOT_PROJECT_CONFIG_PORTION_CLIENT_PATHNAME: ...,
|
55 | // KOOT_PROJECT_CONFIG_PORTION_OTHER_CLIENT_PATHNAME: ...,
|
56 |
|
57 | // Koot 打包配置文件路径 (./koot.build.js)。默认不存在。如果存在则默认使用
|
58 | // KOOT_BUILD_CONFIG_PATHNAME: ...,
|
59 |
|
60 | // 项目名。默认会在进行 Webpack 打包开始前,从项目配置中抽取并写入到环境变量
|
61 | // KOOT_PROJECT_NAME: ...,
|
62 |
|
63 | // 项目类型。默认不存在。如果存在则默认使用
|
64 | // KOOT_PROJECT_TYPE: ...,
|
65 |
|
66 | // history 类型
|
67 | // KOOT_HISTORY_TYPE: ...,
|
68 |
|
69 | // 总开关:i18n/多语言相关处理
|
70 | KOOT_I18N: JSON.stringify(false),
|
71 | // i18n处理方式
|
72 | KOOT_I18N_TYPE: JSON.stringify(''),
|
73 | // 语言包
|
74 | KOOT_I18N_LOCALES: JSON.stringify([]),
|
75 | // 使用的COOKIE KEY
|
76 | KOOT_I18N_COOKIE_KEY: 'spLocaleId',
|
77 | // i18n cookie 影响的域名
|
78 | // KOOT_I18N_COOKIE_DOMAIN: '',
|
79 | // i18n URL 使用方式
|
80 | KOOT_I18N_URL_USE: 'query',
|
81 |
|
82 | // HTML模板内容
|
83 | // KOOT_HTML_TEMPLATE: '',
|
84 |
|
85 | // 打包目标路径(相对运行目录)
|
86 | // KOOT_DIST_DIR: '',
|
87 |
|
88 | // PWA Service-Worker 脚本是否自动注册
|
89 | KOOT_PWA_AUTO_REGISTER: JSON.stringify(defaultsServiceWorker.auto),
|
90 | // PWA Service-Worker 访问路径
|
91 | KOOT_PWA_PATHNAME: JSON.stringify(`/${defaultsServiceWorker.filename}`),
|
92 |
|
93 | // 当前是否是测试模式
|
94 | KOOT_TEST_MODE: JSON.stringify(false),
|
95 |
|
96 | // 当前是否是内部开发模式
|
97 | KOOT_DEVELOPMENT_MODE: JSON.stringify(false),
|
98 |
|
99 | // 开发环境启动时间
|
100 | // KOOT_DEV_START_TIME: Date.now(),
|
101 |
|
102 | // 开发环境: DLL 文件路径
|
103 | // KOOT_DEV_DLL_FILE_CLIENT: '',
|
104 | // KOOT_DEV_DLL_FILE_SERVER: '',
|
105 |
|
106 | // 开发环境: webpack-dev-server 扩展配置对象
|
107 | KOOT_DEV_WDS_EXTEND_CONFIG: JSON.stringify({}),
|
108 |
|
109 | // 定制的环境变量键值
|
110 | KOOT_CUSTOM_ENV_KEYS: JSON.stringify([]),
|
111 |
|
112 | // 客户端打包子目录名
|
113 | KOOT_CLIENT_BUNDLE_SUBFOLDER: '',
|
114 |
|
115 | // 配置: sessionStore
|
116 | KOOT_SESSION_STORE: JSON.stringify(false),
|
117 |
|
118 | /** @type {string}
|
119 | * 服务器模式,可选模式
|
120 | * - _空_ - 默认模式
|
121 | * - serverless
|
122 | */
|
123 | KOOT_SERVER_MODE: ''
|
124 | };
|
125 | for (const key in defaults) {
|
126 | if (typeof process.env[key] === 'undefined') {
|
127 | process.env[key] = defaults[key];
|
128 | }
|
129 | }
|
130 | };
|