我想在我的Angular2应用程序上某个地方有一个时间戳或内部版本号,这样我就可以知道用户是否在使用旧的缓存版本.
如何在AOT编译/构建时使用Angular2中的AngularCLI实现这一点?
我想在我的Angular2应用程序上某个地方有一个时间戳或内部版本号,这样我就可以知道用户是否在使用旧的缓存版本.
如何在AOT编译/构建时使用Angular2中的AngularCLI实现这一点?
npm install replace-in-file --save-dev
添加到生产环境src/Environment/Environment.prod.ts新 属性
export const environment = {
production: true,
version: '{BUILD_VERSION}'
}
将生成文件replace.build.js
添加到文件夹的根目录
var replace = require('replace-in-file');
var buildVersion = process.argv[2];
const options = {
files: 'src/environments/environment.prod.ts',
from: /{BUILD_VERSION}/g,
to: buildVersion,
allowEmptyPaths: false,
};
try {
let changedFiles = replace.sync(options);
console.log('Build version set: ' + buildVersion);
}
catch (error) {
console.error('Error occurred:', error);
}
将脚本添加到Package.json
"updateBuild": "node ./replace.build.js"
在应用程序中使用environment.version
在构建前呼叫npm run updateBuild -- 1.0.1
PS.您必须始终记住,{BUILD_VERSION}从未提交.
PS.我在my blog中写了一个更好的解决方案
PS.3如@julien-100000所述,您不应提交环境.更新版本的prod.ts.版本更新只能在生成过程中进行.而且永远不应该被promise .