有多种方法,但我发现最有用的一种是使用 ng-node-environment 包。这会生成一个文件 ./src/environments/base.ts,您可以在 typescript 导入中直接引用该文件。它包含一个名为sharedEnvironment 的常量对象。您的导入行如下所示:import sharedEnvironment from './base';
当您执行该命令时,它会查找所有以“NG_”开头的环境变量并将它们作为属性添加到sharedEnvironment。
所以,我创建了一个 package.json 脚本来设置变量并执行 ng-node-environment。为了兼容性,我使用 cross-env 使其与平台无关(适用于 windows 和 *nix)
这是我的 package.json 脚本:-
"scripts": {
"version": "cross-env-shell NG_APPVERSION=$npm_package_version node ./node_modules/ng-node-environment/index.js",
"another" : "echo hello world"
}
然后运行:npm run version提取版本并放入./src/environments/base.ts
我现在可以访问属性appversion 并在我的environment.ts 中使用它。
注意:如果我调用了变量NG_APP_Version,则属性名称将被驼峰式大小写为appVersion
import sharedEnvironment from './base';
export const environment = {
production: false,
logLevel: LogLevel.Error,
version : sharedEnvironment.appversion,
};
当然,这样我可以通过在执行ng-node-environment之前设置其他变量来从package.json添加其他值,或者可以通过创建名为NG_<Something>的变量预先添加更多属性,例如:NG_GitBranch、@987654338 @、NG_CliVersion 等
在使用 Angular 进行开发并确保它始终保持同步时,我使用启动脚本开始开发:-
"scripts": {
"version": "cross-env-shell NG_APPVERSION=$npm_package_version node ./node_modules/ng-node-environment/index.js",
"start": "npm run version && ng serve"
}
所以我输入:npm start,它会同步版本号、构建和启动