How to print application package json version in angular
This blog post shows the multiple below things.
- How to display the application version in Angular
- How to get the version from package.json in Angular
During development, the Version number is displayed on the footer to know what version the application is using.
Version Number is a version of the code base configured in package.json for any node application.
For example, package.json is located in the Angular application root folder.
It contains
{
"name": "angular-icon-example",
"version": "2.0.1",
}
The version number is changed for every development agile sprint cycle with more additional features.
How do you get the version number from package.json in the Angular application?
How to print the application version in the Angular application?
There are multiple ways we can print application versions to browser UI.
- read package.json directly in the Angular component.
In AppComponent, Import the package.json file as given below
import { Component } from '@angular/core';
import packagejson from '../../package.json';
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.scss']
})
export class AppComponent {
public appVersion: string = packagejson.version;
constructor() {
}
}
And it throws the below error
Error: src/app/app.component.ts:3:25 - error TS2732: Cannot find module '../../package.json'. Consider using '--resolveJsonModule' to import the module with the '.json' extension.
The reason, Angular does not allow you to import json files by default.
So you have to add the typescript compiler optionresolveJsonModule
configuration tsconfig.json or tsconfig.app.json.
resolveJsonModule: You can import json modules like normal javascript modules tsconfig.json:
{
"compileOnSave": false,
"compilerOptions": {
"resolveJsonModule": true
}
}
Restart the angular application, you see another error
This module is declared using ‘export =’, and can only be used with a default import when using the ‘allowSyntheticDefaultImports’ flag.
The error, says you need to import the modules declared with the export option. if no export is used in the module, you have to configure the allowSyntheticDefaultImports
option in tsconfig.json or tsconfig.app.json. allowSyntheticDefaultImports: You can import modules without an export option like a normal import.
{
"compileOnSave": false,
"compilerOptions": {
"resolveJsonModule": true,
"allowSyntheticDefaultImports": true,
},
Now It works and displays
With this approach, the following is the step by step summary to get the version
Add typescript compiler options in tsconfig.json or tsconfig.app.json.
{ "compileOnSave": false, "compilerOptions": { "resolveJsonModule": true, "allowSyntheticDefaultImports": true, },
In component
import
package.json file like a normal component.
import packageJson from "../../package.json";
Declare a variable of string and initialized with the version attribute of packageJson
public appVersion: string = packageJson.version;
In the template, print the variable using angular expression braces syntax.
<div>{{ appVersion }}</div>