从窗口批处理脚本替换打字稿文件中的变量



我想修改一个打字稿文件,该文件将环境信息保存在一个角度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 中汲取灵感的方法。将很快更新为答案。

我自己解决了。 我的解决方案是:

  1. 在配置文件中添加了一个变量,适用于每个环境
  2. 添加了"在文件中替换"节点库,用于替换特定内容(变量 '%VERSION%'(,它位于特定配置文件中,传递了值 在package.json中调用ng-build-qa: node ./replace.build.js命令时
  3. 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
}

最新更新