web-dev-qa-db-fra.com

Accès indépendant du système d'exploitation aux variables dans package.json

Pour accéder à une variable dans les scripts npm, vous feriez quelque chose comme ça dans votre package.json:

"scripts": {
    "preinstall": "echo ${npm_package_name}"
}

Le problème est que cela ne fonctionne que sous Unix, pas Windows, où vous devez utiliser %npm_package_name%.

Existe-t-il un moyen de faire ce système d'exploitation indépendamment? Ce serait bien si npm pouvait faire une telle expansion de variable, avant d'appeler la commande.

23
Adrian Ber

Pour le rendre multiplateforme, utilisez cross-var :

"scripts": {
    "preinstall": "cross-var echo ${npm_package_name}"
}
31
Mark Woon

Il n'y a aucun moyen connu de le faire qui soit indépendant du système d'exploitation.

Une bonne solution consiste à exécuter la commande dans un script de nœud:

Tout d'abord, modifiez la commande preinstall pour exécuter un script de noeud:

"scripts": {
    "preinstall": "node nameEcho.js"
}

Ensuite, vous définissez la commande dans le fichier nameEcho.js:

// require the package.json file
var pjson = require('./package.json');

// echo the package's name
console.log(pjson.name);
3
gnerkus