环境变量


简介

nowa servernowa build 共用一套环境变量注入解决方案。

环境变量指的是在代码中使用到的与运行环境相关的变量,这些变量可以是当前的部署环境(本地、日常、预发、线上)、当前的语言环境(汉语、英语…)或是当前的客户端环境(安卓、iOS…)等,工具会根据环境变量取值组合来做定制化的构建。

环境变量的合理使用可以让代码变得更加精简,使得与当前环境不相关的代码都不被构建。而在运行时,只用引入符合当前环境变量组合构建出来的代码就行了。

每个环境变量都可以有多个候选值,当候选值有超过一个时,输出文件会根据环境变量当前的取值而使用不同的文件名后缀,对每一种不同的取值组合都输出独立的打包文件。

使用

—vars

vars 用于定义当前环境变量取值。

例如,在 abc.json 中定义了 localeLOCAL 的取值:

  1. {
  2. "options": {
  3. "vars": {
  4. "locale": "en",
  5. "__LOCAL__": false
  6. }
  7. }
  8. }

则以下代码:

  1. var lang = require('./' + locale);
  2. if (__LOCAL__) {
  3. console.log('debug info');
  4. }

将等价于

  1. var lang = require('./en');

从而精简代码和减少构建时间。

—buildvars

buildvars 用于定义每个环境变量的全部候选值。

例如,在 abc.json 中定义了 localeLOCAL 的取值和候选值:

  1. {
  2. "options": {
  3. "vars": {
  4. "locale": "en",
  5. "__LOCAL__": true
  6. },
  7. "buildvars": {
  8. "locale": ["en", "zh-cn"],
  9. "__LOCAL__": [false]
  10. }
  11. }
  12. }

则在 nowa server 时,将使用 { locale: 'en', LOCAL: true } 的环境变量组合构建输出 app-en.js 文件。

而在 nowa build 时,将分别使用 { locale: 'en', LOCAL: false }{ locale: 'zh-cn', LOCAL: false } 的环境变量组合构建输出 app-en.jsapp-zh-cn.js 文件。