web-dev-qa-db-fra.com

Comment puis-je référencer la version d'un package dans le script npm?

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?

24
Evaldo Bratti

1) Référencement de la version du package dans les scripts npm.

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


2) Référencement de la version du package dans le script de nœud.

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

3) Remplacement d'une chaîne d'espace réservé dans un fichier .js par la version du package.

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"
  }
}
47
RobC