如何在Angular应用中显示应用版本?版本应该从包中取出。json文件。
{
"name": "angular-app",
"version": "0.0.1",
...
}
在Angular 1中。x,我有这个html:
<p><%=version %></p>
在Angular中,它不会被渲染为版本号,而是直接打印出来(<%=version %>而不是0.0.1)。
如何在Angular应用中显示应用版本?版本应该从包中取出。json文件。
{
"name": "angular-app",
"version": "0.0.1",
...
}
在Angular 1中。x,我有这个html:
<p><%=version %></p>
在Angular中,它不会被渲染为版本号,而是直接打印出来(<%=version %>而不是0.0.1)。
当前回答
如果你想在你的angular应用中使用/显示版本号,请执行以下操作:
先决条件:
通过Angular CLI创建的Angular文件和文件夹结构
Angular 6.1 (TS 2.9+)到Angular 11的步骤
在/tsconfig中。Json(有时在/src/tsconfig.app.json中也需要)启用以下选项(之后需要重新启动webpack开发服务器):
"compilerOptions": {
...
"resolveJsonModule": true,
...
然后在你的组件中,例如/src/app/app.component.ts使用这样的版本信息:
import { version } from '../../package.json';
...
export class AppComponent {
public version: string = version;
}
当在Angular 12+中使用这段代码时,你可能会得到:错误:不应该从default- exports模块导入命名的export 'version'(导入为'version')(很快只有default export可用)。 在这种情况下,请使用以下代码:
Angular 12+的步骤
在/tsconfig中。/src/tsconfig.app.json(有时在/src/tsconfig.app.json中也需要)启用以下选项(之后需要重新启动webpack开发服务器):
"compilerOptions": {
...
"resolveJsonModule": true,
"allowSyntheticDefaultImports": true,
...
然后在你的组件中,例如/src/app/app.component.ts使用这样的版本信息:
import packageJson from '../../package.json';
...
export class AppComponent {
public version: string = packageJson.version;
}
在您的环境中也可以执行第2步。Ts文件,使版本信息可从那里访问。
谢谢@Ionaru和@MarcoRinck的帮助。
这个解决方案不应该包含包。json内容——只有版本号(在Angular 8和13中勾选)。
为了确保这一点,请检查生成的main.#hash#.js文件!
其他回答
这个答案只针对Angular 12+。它使用Webpack 5。
根据webpack5文档
新规范不支持这一点,您将得到一个警告。而不是:
import { version } from './package.json';
console.log(version);
use:
import pkg from './package.json';
console.log(pkg.version);
另外,你必须在tsconfig.json中提供
"compilerOptions": {
...
"allowSyntheticDefaultImports": true
"resolveJsonModule":true
...
角13+ /离子型
这对我来说很管用:
把它放在dev和prod环境文件下。
environment.ts
declare const require: any;
export const environment = {
appVersion: require('../../package.json').version,
};
任何组件的示例用法:
import { environment } from 'src/environments/environment';
constructor() {
console.log(environment.appVersion);
}
打印稿
import { Component, OnInit } from '@angular/core';
declare var require: any;
@Component({
selector: 'app-version',
templateUrl: './version.component.html',
styleUrls: ['./version.component.scss']
})
export class VersionComponent implements OnInit {
version: string = require( '../../../../package.json').version;
constructor() {}
ngOnInit() {
}
}
HTML
<div class="row">
<p class="version">{{'general.version' | translate}}: {{version}}</p>
</div>
如果你想在你的angular应用中使用/显示版本号,请执行以下操作:
先决条件:
通过Angular CLI创建的Angular文件和文件夹结构
Angular 6.1 (TS 2.9+)到Angular 11的步骤
在/tsconfig中。Json(有时在/src/tsconfig.app.json中也需要)启用以下选项(之后需要重新启动webpack开发服务器):
"compilerOptions": {
...
"resolveJsonModule": true,
...
然后在你的组件中,例如/src/app/app.component.ts使用这样的版本信息:
import { version } from '../../package.json';
...
export class AppComponent {
public version: string = version;
}
当在Angular 12+中使用这段代码时,你可能会得到:错误:不应该从default- exports模块导入命名的export 'version'(导入为'version')(很快只有default export可用)。 在这种情况下,请使用以下代码:
Angular 12+的步骤
在/tsconfig中。/src/tsconfig.app.json(有时在/src/tsconfig.app.json中也需要)启用以下选项(之后需要重新启动webpack开发服务器):
"compilerOptions": {
...
"resolveJsonModule": true,
"allowSyntheticDefaultImports": true,
...
然后在你的组件中,例如/src/app/app.component.ts使用这样的版本信息:
import packageJson from '../../package.json';
...
export class AppComponent {
public version: string = packageJson.version;
}
在您的环境中也可以执行第2步。Ts文件,使版本信息可从那里访问。
谢谢@Ionaru和@MarcoRinck的帮助。
这个解决方案不应该包含包。json内容——只有版本号(在Angular 8和13中勾选)。
为了确保这一点,请检查生成的main.#hash#.js文件!
尝试DyslexicDcuk的答案,结果是找不到name require
然后,阅读https://www.typescriptlang.org/docs/handbook/modules.html中的“可选模块加载和其他高级加载场景”部分帮助我解决了这个问题。(Gary在这里提到了https://stackoverflow.com/a/41767479/7047595)
使用下面的声明来要求package.json。
declare function require(moduleName: string): any;
const {version : appVersion} = require('path-to-package.json');