Je veux référencer la version de mon package dans un script npm afin de pouvoir afficher la version actuelle dans l'application. Quelque chose comme
{
"name": "bla",
"version": "1.0.0",
"author": "bla bla",
"scripts": {
"build": "node VERSION=<<package.version>> build/build.js"
}
}
Y a-t-il un moyen de faire cela?
Dans npm-script
vous pouvez référencer le version
en utilisant la variable npm_package_version
. Par exemple:
Utilisation d'un shell bash (par exemple Linux, macOS):
{
...
"version": "1.0.0",
"scripts": {
"build": "echo $npm_package_version"
}
}
Notez le $
préfixe
Sous Windows (par exemple cmd.exe, Powershell):
{
...
"version": "1.0.0",
"scripts": {
"build": "echo %npm_package_version%"
}
}
Notez le %
préfixe et suffixe
Plateforme croisée
Pour utiliser une syntaxe multiplateforme, consultez le package cross-var
La version du package peut également être référencée dans votre script d'application/nœud (c'est-à-dire build.js
) comme suit:
const VERSION = process.env.npm_package_version;
console.log(VERSION); // --> 1.0.0
Une autre façon d'y parvenir consiste à spécifier une chaîne de texte d'espace réservé dans votre fichier JavaScript. Disons que nous avons un fichier nommé build.js
et dans ce fichier, nous avons une variable nommée VERSION
déclarée comme suit:
// build.js
const VERSION = '@VERSION@'
Comme vous pouvez le voir, la chaîne de texte de l'espace réservé est @VERSION@
.
Vous pouvez ensuite installer et utiliser le package appelé replace dans un npm-script comme suit:
{
...
"version": "1.0.0",
"scripts": {
"add-version": "replace -s \"@VERSION@\" $npm_package_version build/build.js"
}
}
Fonctionnement npm run add-version
remplacera l'instance de @VERSION@
avec la version du package (c'est-à-dire 1.0.0
), dans le fichier nommé build.js
. Cette solution codera en dur la version du package npm dans le fichier résultant.
Remarque: la chaîne à dans le add-version
le script (ci-dessus) utilise actuellement le $
préfixe (c'est-à-dire $npm_package_version
) pour accéder à la variable, donc cela ne fonctionnera correctement qu'avec un shell bash. Cependant, pour une utilisation multiplateforme, vous devrez utiliser cross-var
comme expliqué dans la première section (ci-dessus). Dans ce cas, le add-version
le script peut être défini comme suit:
{
...
"version": "1.0.0",
"scripts": {
"add-version": "cross-var replace -s \"@VERSION@\" $npm_package_version build/build.js"
}
}