外观
环境管理
环境变量
在项目根目录下有通用环境变量文件 .env 和特定环境变量文件(.env.int 集成环境、.env.pre 预发布环境、.env.production 生产环境)等用于定义环境变量的文件。这几个文件的作用是一样的,主要区别是:
- 通用环境变量文件中定义的变量在 int、pre、production 等环境下都会生效。
- 特定环境变量文件文件中定义的变量分别只会在 int、pre、production 等特定环境下生效。
- 当特定环境变量文件中存在和通用环境变量文件里同名的变量时,以特定环境变量文件中定义的变量值为准。
如果你有临时的环境变量值,可以在项目根目录下新建一个本地环境变量文件 .env.local,该文件里定义的变量值的优先级是最高的。
优先级的定义
具体看 /src/utils/ConstantUtils.mts 文件中 parseEnvFiles 函数的调用方式。该函数入参是一个由变量文件路径名组成的字符串数组,数组中靠前的变量文件路径拥有更高的优先级。如果你需要添加类似 .env.int.local 的变量文件,只需要在这里加入对应的解析即可。
mts
const pathEnvFiles: string[] = [
joinPath(PATH_ROOT, ".env.local"),
joinPath(PATH_ROOT, `.env.${MODE}.${NODE_ENV}`),
joinPath(PATH_ROOT, `.env.${MODE}`),
joinPath(PATH_ROOT, ".env"),
];
parseEnvFiles(pathEnvFiles);1
2
3
4
5
6
7
2
3
4
5
6
7
注意事项
- 无论是前端项目还是后端项目,需要使用环境变量定义的值时,都应该使用
/src/utils/ConstantUtils.mts文件中定义的变量,该文件中的变量大部分都是从环境变量文件中读取到值的。 - 前端只能导入非敏感变量(如路径前缀等),不得将敏感变量导入到前端项目中。
指定环境
若所需执行的脚本依赖环境变量文件,只需在执行对应脚本时通过类似 MODE=int 的方式指定 MODE 变量值即可。
示例:
bash
cross-env NODE_ENV=development MODE=int node --run dev1
bash
cross-env NODE_ENV=production MODE=production node ./scripts/watch-server-logs.mts1