UNPKG

4.48 kBJavaScriptView Raw
1const path = require('path');
2const fs = require('fs-extra');
3
4const defaultsServiceWorker = require('../defaults/service-worker');
5
6/**
7 * 初始化 node.js 环境变量
8 */
9module.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};