web-dev-qa-db-fra.com

Passer des arguments au script npm dans package.json

Existe-t-il un moyen de passer des arguments à l'intérieur de la commande package.json?

Mon script:

"scripts": {
  "test": "node mytest.js $1 $2 | node_modules/tap-difflet/bin/tap-difflet"
}

cli npm run test 8080 production

Puis sur mytest.js J'aimerais obtenir les arguments avec process.argv

29
EnZo

Passer des arguments au script

Pour passer des arguments à script npm , vous devez les fournir après -- Pour la sécurité.

Dans ton cas, -- peut être omis. Ils se comportent de la même manière:

npm run test -- 8080 production
npm run test 8080 production

Mais lorsque les arguments contiennent des options (par exemple -p), -- est nécessaire sinon npm les analysera et les traitera comme l'option de npm.

npm run test -- 8080 -p

Utiliser des paramètres de position

Les arguments sont simplement ajoutés au script à exécuter. Votre $1$2 ne sera pas résolu. La commande que npm exécute réellement est:

node mytest.js $1 $2 | node_modules/tap-difflet/bin/tap-difflet "8080" "production"

Afin de faire fonctionner la variable de position dans le script npm, encapsulez la commande dans une fonction Shell:

"scripts": {
  "test": "run(){ node mytest.js $1 $2 | node_modules/tap-difflet/bin/tap-difflet; }; run"
}

Ou utilisez l'outil scripty et placez votre script dans un fichier individuel.

package.json :

"scripts": {
  "test": "scripty"
}

scripts/test :

#!/usr/bin/env sh
node mytest.js $1 $2 | node_modules/tap-difflet/bin/tap-difflet
40
aleung