当前位置:  开发笔记 > 前端 > 正文

如何在AngularCLI中的构建时插入构建号或时间戳

如何解决《如何在AngularCLI中的构建时插入构建号或时间戳》经验,为你挑选了3个好方法。

我希望在我的Angular2应用程序上的某个地方有一个时间戳或内部版本号,这样我就可以判断用户是否使用旧的缓存版本.

如何在AOT编译/构建时使用Angular2中的AngularCLI执行此操作?



1> Volodymyr Bi..:

    安装插件 npm install replace-in-file --save-dev --save-dev

    添加到prod环境src/environments/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.我在博客中写了一个更好的解决方案

PS.3 as @ julien-100000提到你不应该使用更新版本提交environment.prod.ts.版本更新必须仅在构建过程中发生.永远不应该承诺.



2> slartidan..:

将此步骤添加到jenkins-job:

echo export class MyVersion {public static readonly number = '%SVN_REVISION%'} > src\my-version.ts

你可以访问这样的数字:

import {MyVersion} from "../my-version";

export class AppComponent {
    constructor() {
        console.log("Welcome to MyApp version " + MyVersion.number);
    }
}

该解决方案是+ lightweight,+ easy to read,+ robust.



3> Vahid..:

无需安装replace-in-file或执行@VolodymyrBilyachat提到的任何步骤。

简单的解决方案:使用角度环境

就在您所需的environment。*。ts文件中(有关环境的更多信息,请阅读angular-2-and-environment-variables),要求package.json如下:

export const environment = {
    version: require('../package.json').version
};

然后在您的应用导入环境中:

import { environment } from '../environments/environment';

而且你有environment.version。如果遇到cannot find name 'require'错误,请阅读此答案

更多信息

注意:正如@VolodymyrBilyachat在评论中提到的那样,这会将您的package.json文件包括在最终的捆绑文件中。


我之所以询问require如何与摇树一起工作的原因是,基本上,它是将所有内容注入捆绑中。因此,如果确实需要package.json,则应该了解该文件的全部内容都将捆绑到您的min脚本中。如果您对此表示满意,那就很好。是的,您的链接与我的问题完全无关
@VolodymyrBilyachat有用的信息!谢谢
推荐阅读
TXCWB_523
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有