在Angular(> = 2)应用程序中,如何将npm package.json文件中的版本信息包含到已编译的输出文件中?

时间:2017-06-29 19:11:51

标签: node.js angular npm webpack package.json

信息:

  1. 我使用@angular/cli创建了一个Angular(版本> = 2)应用程序。

  2. 此应用程序正在进行版本更改。

  3. 我确实使用package.jsonnpm version majornpm version minor命令在我的npm version patch文件中更新了我的应用程序的语义版本信息。

  4. 当我运行ng buildng build --prod时,我无法在“dist”输出文件夹中的任何文件中找到此版本信息。

  5. 问题:

    有没有办法将我的应用程序的版本信息自动从package.json文件导入其中一个输出文件(可能在html文件或js文件中)?

    来自我的package.json文件的示例:

    {
      "name": "angular-ui",
      "version": "17.6.27",
      "description": "My awesome UI application",
      "license": "MIT",
      ...
    }
    

    理想情况下,我想创建一个“about”组件,当我访问类似于以下内容的URL时,我想发布应用程序的版本信息:

    http://localhost:4200/about

    页面上的预期输出:

    Application version: v17.6.27
    

1 个答案:

答案 0 :(得分:2)

您可以创建一个自定义脚本,该脚本将从package.json读取信息并运行echo "export const APP_VERSION = $version" > src/app/version.ts

然后在构建之前调用此脚本。

如果使用ng-cli创建应用程序,则应该已经在package.json中创建了脚本条目。类似的东西:

"scripts": {
  "ng": "ng",
  "changelog": "standard-changelog",
  "start": "ng serve",
  "build": "ng build",
  "test": "ng test",
  "lint": "ng lint",
  "e2e": "ng e2e"
},

您可以用

之类的内容替换构建
"scripts": {
  "build": "sh version-script.sh && ng build",
}

我认为你可以找到一些比糟糕的script.sh更好的工具,并在构建之前连接它们。