我正在使用Angular 6和Angular CLI通过AOT进行构建。 SPA有一个About对话框,用于告知当前的前端版本,基本上是YYMMDD:mm。我将版本存储在environment / environment.ts中:
export const AppConfigConstants: AppConfigConstantsType = {
version: '180709.13',
};
当前在运行
ng build --configuration=production
我必须手动修改版本。如果可以自动更新版本号会更好。
Angular CLI中是否有良好的功能来修改TS文件?还是您有其他解决方案?
答案 0 :(得分:1)
您可以将脚本添加到npm build
,以在运行ng build
之前增加版本号:
版本号可以存储在一个JSON文件中,您可以在应用程序中读取该文件:
src / version.json
{
"v": 0
}
increment-version.js
// read version.json from file system, increment the version by 1
const fs = require("fs");
fs.readFile("src/version.json", (err, content) => {
const versionObject = JSON.parse(content.toString());
versionObject.v ++;
fs.writeFile("src/version.json", JSON.stringify(versionObject), () => {});
});
package.json
"scripts": {
...
"build": "node increment-version.js && ng build"
}
angular.json
"assets": [
...
"src/version.json"
]
typings.d.ts
....
declare module "*.json" {
const value: any;
export default value;
}
about-dialog.ts
import * as version from '../version.json';
const versionNumber = version.v;
答案 1 :(得分:0)
我是一个批处理文件,通常可以调用ng build。
批处理文件如下:
cd %~dp0NGSource
for /f "skip=1" %%x in ('wmic os get localdatetime') do if not defined MyDate set MyDate=%%x
set today=%MyDate:~0,4%%MyDate:~4,2%%MyDate:~6,2%%time:~0,2%%time:~3,2%
@echo const BUILD_TIME={buildTime: %today%} > src\conf\buildTime.js
ng build --configuration=production
并且buildTime.js包含在angular.json的脚本节点中,因此将其捆绑在scripts.xxxxx.js中。我的TS代码通过以下声明访问此文件:
declare const BUILD_TIME: {
buildTime?: string;
}
interface AppConfigConstantsType {
version: string;
buildTime?: string;
}
export const AppConfigConstants: AppConfigConstantsType = {
version: '2.3',
...(typeof BUILD_TIME === 'undefined' ? { buildTime: 'Unknown' } : BUILD_TIME),
};
最后,我决定将版本号和内部版本号分开。如果您想将它们组合成一个字符串,那么调整上面的代码就不难了。