环境变量
EMP
支持在编译过程中向代码中注入环境变量或表达式,这对于区分运行环境、替换常量值等场景很有帮助。本章节会介绍环境变量的使用方式。
默认环境变量
process.env.NODE_ENV
默认情况下,EMP
会自动设置 process.env.NODE_ENV
环境变量,在开发模式为 'development'
,生产模式为 'production'
。
你可以在 Node.js 和 client 代码中直接使用 process.env.NODE_ENV
。
if (process.env.NODE_ENV === 'development') {
console.log('this is a development log');
}
在开发环境,以上代码会被编译为:
if (true) {
console.log('this is a development log');
}
在生产环境,以上代码会被编译为:
if (false) {
console.log('this is a development log');
}
在代码压缩过程中,if (false) { ... }
会被识别为无效代码,并被自动移除。
命令行工具中快速定义变量
可以在 npm script
中,快速添加 cli 参数来达到区分环境的目的。
-e --env
script: {
"dev": "emp dev --env dev",
"build": "emp build --env test",
"build:prod": "emp build --env prod",
}
代码里面使用
if (process.env.env) {
//...
}
-ev, --env-vars
使用 -ev key=value 或 -ev key=value -ev key=value 定义一个或多个环境变量,可以在构建时候使用这些环境变量。
单个变量
script: {
"dev": "emp dev --env-vars showLog=true",
"build": "emp build --env-vars showLog=false",
"build:prod": "emp build --env-vars showLog=false",
}
多个变量
script: {
"dev": "emp dev --env-vars showLog=true --env-vars sourceMap=true",
"build": "emp build --env-vars showLog=false --env-vars sourceMap=true",
"build:prod": "emp build --env-vars showLog=false --env-vars sourceMap=false",
}
在配置中使用变量
import {defineConfig} from '@empjs/cli'
export default defineConfig(store => {
const {cliOptions} = store
console.log('cliOptions', cliOptions.envVars)
}
执行 run dev
控制台输出
cliOptions { showLog: 'false', sourceMap: 'true' }
更多环境变量配置,请见配置