You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Angular 12独立组件库如何显示package.json中的版本号?

Angular 12独立库中显示package.json版本的解决方案

方案一:构建前动态生成版本常量文件

  1. 在库的src目录下创建version.ts文件,初始内容:
export const LIB_VERSION = '0.0.0';
  1. 在组件中导入并使用该常量:
import { LIB_VERSION } from './version';

@Component({
  selector: 'lib-my-component',
  template: `<p>当前库版本:{{ libVersion }}</p>`
})
export class MyComponent {
  libVersion = LIB_VERSION;
}
  1. 在根目录package.json的scripts中添加预构建脚本,自动从根目录package.json读取版本并替换version.ts内容:
"scripts": {
  "prebuild-lib": "node -e \"const fs = require('fs'); const pkg = require('./package.json'); fs.writeFileSync('./projects/lib-name/src/version.ts', 'export const LIB_VERSION = \\'' + pkg.version + '\\';');\""
}
  1. 执行构建时先运行预脚本:npm run prebuild-lib && ng build lib-name,版本会自动注入到组件中。

方案二:用自定义Webpack注入全局版本变量

  1. 安装自定义Webpack构建器:
npm install @angular-builders/custom-webpack --save-dev
  1. 修改angular.json,将库的构建器替换为自定义Webpack构建器:
"projects.[lib-name].architect.build": {
  "builder": "@angular-builders/custom-webpack:browser",
  "options": {
    "customWebpackConfig": {
      "path": "./projects/lib-name/webpack.config.js"
    },
    // 保留原有其他配置
  }
}
  1. 在库目录下创建webpack.config.js,通过DefinePlugin注入版本:
const webpack = require('webpack');
const pkg = require('./package.json');

module.exports = {
  plugins: [
    new webpack.DefinePlugin({
      LIB_VERSION: JSON.stringify(pkg.version)
    })
  ]
};
  1. 在组件中声明全局变量并使用:
declare const LIB_VERSION: string;

@Component({
  selector: 'lib-my-component',
  template: `<p>当前库版本:{{ libVersion }}</p>`
})
export class MyComponent {
  libVersion = LIB_VERSION;
}

方案三:复制package.json到src目录(简易版)

  1. 在tsconfig.lib.json中开启JSON模块支持:
{
  "compilerOptions": {
    "resolveJsonModule": true,
    "allowSyntheticDefaultImports": true,
    // 保留原有其他配置
  }
}
  1. 添加脚本自动复制根目录package.json到src目录(避免手动同步):
"scripts": {
  "prebuild-lib": "cp package.json projects/lib-name/src/"
}
  1. 在.gitignore中添加projects/lib-name/src/package.json,避免提交冗余文件。
  2. 在组件中导入并使用:
import pkg from './package.json';

@Component({
  selector: 'lib-my-component',
  template: `<p>当前库版本:{{ pkg.version }}</p>`
})
export class MyComponent {
  pkg = pkg;
}

内容的提问来源于stack exchange,提问作者Lukho Mdingi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 00:22:18