我想修改一个打字稿文件,该文件将环境信息保存在一个角度6项目中。变量值只能在生成时更改,生成是通过批处理文件启动的。
环境文件如下所示:(其中构建是要更改/替换的变量(
export const environment = {
host: 'http://localhost:8080',
build: "1.0.0.0"
};
我发现很难通过批处理文件做同样的事情。环境文件对于不同的环境(local/qa/dev/prod(是不同的,并且构建是由构建工程师启动的。 当前的构建过程调用 webpack 命令,并压缩输出。
有没有办法从每个构建中动态替换"构建"值?
编辑: 想出了一种从 https://www.bilyachat.com/blog/angular-2-build-version 中汲取灵感的方法。将很快更新为答案。
我自己解决了。 我的解决方案是:
- 在配置文件中添加了一个变量,适用于每个环境
- 添加了"在文件中替换"节点库,用于替换特定内容(变量 '%VERSION%'(,它位于特定配置文件中,传递了值 在
package.json
中调用ng-build-qa: node ./replace.build.js
命令时 replace.build.js
文件的内容是:
var replace = require('replace-in-file');
var buildVersion = process.argv[2];
const options = {
files: 'environments/environment.qa.ts',
from: "%VERSION%",
to: ""+ buildVersion + "",
allowEmptyPaths: false,
};
try {
let changedFiles = replace.sync(options);
if (changedFiles == 0) {
throw "Please make sure that file '" + options.files + "' has "version: ''"";
}
console.log('Build version set: ' + buildVersion);
}
catch (error) {
console.error('Error occurred:', error);
throw error
}