环境变量
简介
nowa server
和 nowa build
共用一套环境变量注入解决方案。
环境变量指的是在代码中使用到的与运行环境相关的变量,这些变量可以是当前的部署环境(本地、日常、预发、线上)、当前的语言环境(汉语、英语…)或是当前的客户端环境(安卓、iOS…)等,工具会根据环境变量取值组合来做定制化的构建。
环境变量的合理使用可以让代码变得更加精简,使得与当前环境不相关的代码都不被构建。而在运行时,只用引入符合当前环境变量组合构建出来的代码就行了。
每个环境变量都可以有多个候选值,当候选值有超过一个时,输出文件会根据环境变量当前的取值而使用不同的文件名后缀,对每一种不同的取值组合都输出独立的打包文件。
使用
--vars
vars
用于定义当前环境变量取值。
例如,在 abc.json
中定义了 locale
和 __LOCAL__
的取值:
{
"options": {
"vars": {
"locale": "en",
"__LOCAL__": false
}
}
}
则以下代码:
var lang = require('./' + locale);
if (__LOCAL__) {
console.log('debug info');
}
将等价于
var lang = require('./en');
从而精简代码和减少构建时间。
--buildvars
buildvars
用于定义每个环境变量的全部候选值。
例如,在 abc.json
中定义了 locale
和 __LOCAL__
的取值和候选值:
{
"options": {
"vars": {
"locale": "en",
"__LOCAL__": true
},
"buildvars": {
"locale": ["en", "zh-cn"],
"__LOCAL__": [false]
}
}
}
则在 nowa server
时,将使用 { locale: 'en', __LOCAL__: true }
的环境变量组合构建输出 app-en.js
文件。
而在 nowa build
时,将分别使用 { locale: 'en', __LOCAL__: false }
和 { locale: 'zh-cn', __LOCAL__: false }
的环境变量组合构建输出 app-en.js
和 app-zh-cn.js
文件。