Tengo un proyecto Angular (v12) que se actualiza periódicamente. A veces hacemos una compilación dos o tres veces en un solo día.
El cliente desea mostrar la versión actual de la aplicación en el formato AAAA.MM.DD.x , siendo x el número de compilación del día, por ejemplo, v2022.03.14.3 sería el número de versión para la tercera compilación de hoy.
En los entornos, tengo una propiedad para esto, que luego uso en el componente relevante, pero actualmente tengo que actualizarla manualmente cada vez que ejecuto ng build y luego confirmo el cambio en el repositorio de git para la próxima vez.
Tenía la esperanza de poder encontrar una manera de automatizar esto, incluso si solo obtengo la fecha.
En el pasado, agregué una clave a mi archivo package.json llamada algo así como dateVersion (ya que npm es solo semver). Luego aprovecho json-loader en el paquete web, que le permitirá simplemente: import { dateVersion } from './../package.json' a la parte de la aplicación en la que desea mostrar su versión.
Apuesto a que puede encontrar una forma de actualizar el archivo del paquete en el mismo momento en que actualiza el archivo de entorno.
Puede haber una forma más ng de hacer esto, pero lo anterior es lo que he hecho en el pasado y sigo haciendo en la mayoría de mis interfaces.
(para mostrar la versión de package.json)
Agregue appVersion param a su enviorment.ts .
export const environment = { appVersion: require('../../package.json').version; }; Importe el entorno a su componente y acceda a appVersion y utilícelo en su plantilla.
import { environment } from 'src/environments/environment'; currentVersion : string = environment.appVersion; today: Date = new Date();en html
<div>Current version: {{today | date : 'YYYY.MM.DD'}} {{currentVersion}}</div>Si desea que la fecha sea la fecha en que se realizó la compilación, siga esto: https://medium.com/@izzatnadiri/how-to-inject-and-display-an-angular-build-timestamp-and-application-environment -detalles-en-67a312f80656
(para incrementar automáticamente la versión en la compilación)
Usemos el parche de npm version patch para cambiarlo. Aumentamos el número de versión en npm run build .
Agregar a las secuencias de comandos de package.json
"prebuild": "npm --no-git-tag-version version patch"pacakge.json antes de compilar
{ "name": "application-versioning", "version": "0.0.0", "scripts": { "ng": "ng", "start": "ng serve", "prebuild": "npm --no-git-tag-version version patch", "build": "ng build --prod --aot", "test": "ng test", "lint": "ng lint", "e2e": "ng e2e" }, ...Luego ejecuta el comando
npm run buildDespués del cambio de versión del aviso de compilación
{ "name": "application-versioning", "version": "0.0.1", "scripts": { "ng": "ng", "start": "ng serve", "prebuild": "npm --no-git-tag-version version patch", "build": "ng build --prod --aot", "test": "ng test", "lint": "ng lint", "e2e": "ng e2e" } ...Puede usar etiquetas o lanzamientos de git para enviar como argumento para compilar la ventana acoplable, de esta manera sabrá exactamente qué confirmación se implementó:
// environment.prod.ts export const environment = { release: '<VERSION>', production: true, apiHost: 'https://example.app', }; # Dockerfile # Stage 0, "build-stage", based on Node.js, to build and compile the frontend FROM node:16.14.0 as build WORKDIR /app ARG config ARG version COPY / /app RUN sed -i "s|<VERSION>|\"${version}\"|" ./projects/app-dashboard/src/environments/environment.${config}.ts RUN npm install RUN npm run pre-processing RUN npm run build:${config}