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
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
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