npm 如何在Angular 17应用程序中只公开package.json版本?

tzxcd3kk  于 2024-01-08  发布在  Angular
关注(0)|答案(2)|浏览(184)

我有一个package.json,我希望它的版本能够显示在我的Web应用程序的UI上。当导入package.json时,我遇到的问题是它会暴露package.json的整个内容。有没有一个干净的解决方案,只提取版本,而不暴露其余的内容?这当然是出于安全原因。
我目前的方法是使用包中的版本。json:{ "name": "example", "version": "0.0.1", }
并通过像这样导入它来显示它:import { version } from '../../package.json';
然而,这样做会暴露整个文件,正如我从开发人员工具中看到的那样,你可以在我附上的图片中看到。
[DevTools中暴露的package.json][1] [1]:https://i.stack.imgur.com/eDV4p.png

hvvq6cgz

hvvq6cgz1#

我找到了一个解决方案,使用一个名为node-env的npm包,它允许我为版本设置节点环境变量,然后可以通过process.env.['VERSION']访问我的Angular应用程序。
package.json脚本示例:

"scripts": {
    "prod": "cross-env VERSION=$npm_package_version ng build",
  },

字符串
然后,它可以像这样在您的组件中访问:version = process.env?.['VERSION'] ?? 'Unknown Version';`个

0lvr5msh

0lvr5msh2#

不管这个答案,package.json的内容确实暴露了。
在您的environment.ts中,添加一个如下所示的属性:

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

字符串
根据您的喜好调整package.json路径,版本将如下所示:

import { environment } from 'src/environments/environment';
const version = environment.version;

相关问题