Es una buena idea declarar version
como variable de entorno para que pueda usarlo en cualquier parte de su proyecto. (especialmente en el caso de cargar archivos para almacenar en caché según la versión e.g. yourCustomjsonFile.json?version=1.0.0
)
Para evitar problemas de seguridad (como mencionó @ZetaPR) podemos usar este enfoque (en el comentario de @sgwatgit)
En resumen: creamos un yourProjectPath \ PreBuild.js expediente. Me gusta esto:
const path = require('path');
const colors = require('colors/safe');
const fs = require('fs');
const dada = require.resolve('./package.json');
const appVersion = require('./package.json').version;
console.log(colors.cyan('\nRunning pre-build tasks'));
const versionFilePath = path.join(__dirname + '/src/environments/version.ts');
const src = `export const version = '${appVersion}';
`;
console.log(colors.green(`Dada ${colors.yellow(dada)}`));
// ensure version module pulls value from package.json
fs.writeFile(versionFilePath, src, { flat: 'w' }, function (err) {
if (err) {
return console.log(colors.red(err));
}
console.log(colors.green(`Updating application version
${colors.yellow(appVersion)}`));
console.log(`${colors.green('Writing version module to
')}${colors.yellow(versionFilePath)}\n`);
});
El fragmento anterior creará un nuevo archivo /src/environments/version.ts
que contiene una constante llamada version
y lo establecerá por valor extraído del package.json
archivo.
Para ejecutar el contenido de la PreBuild.json
compilación, agregamos este archivo a la sección Package.json
-> "scripts": { ... }"
como se muestra a continuación. Entonces podemos ejecutar el proyecto usando este código npm start
:
{
"name": "YourProject",
"version": "1.0.0",
"license": "...",
"scripts": {
"ng": "...",
"start": "node PreBuild.js & ng serve",
},...
}
Ahora podemos simplemente importar la versión y usarla donde queramos:
import { version } from '../../../../environments/version';
...
export class MyComponent{
...
public versionUseCase: string = version;
}