2017-02-27 1 views
3

Existe-t-il un moyen de passer des arguments de ligne de commande à un script 'pre' npm ou à un script exécutant plusieurs commandes?Transmettre des arguments de ligne de commande au script 'pre' npm et au script avec plusieurs commandes

En supposant un simple script mySexyScript.js qui vient se connecte le process.argv:

console.log(process.argv); 

Cela fonctionne

Avec un script NPM:

... 
"scripts": { 
    .... 
    "sexyscript": "node mySexyScript.js" 
    .... 
} 
... 

fonctionnement:

npm run sexyscript -- --foo=bar 

Les arguments sont enregistrés dans la console comme prévu.

script 'pre' - Cela ne fonctionne pas

Avec un script NPM:

... 
"scripts": { 
    .... 
    "presexyscript": "node mySexyScript.js" 
    "sexyscript": "node mySuperSexyScript.js" 
    .... 
} 
... 

fonctionnement:

npm run sexyscript -- --foo=bar 

les arguments ne sont pas transmis à mySexyScript et ils ne sont pas enregistrés

commandes multiples - Cela ne fonctionne pas non plus

Avec un script NPM:

... 
"scripts": { 
    .... 
    "sexyscript": "node mySexyScript.js && node mySuperSexyScript.js" 
    .... 
} 
... 

fonctionnement:

npm run sexyscript -- --foo=bar 

les arguments ne sont pas transmis à mySexyScript et ils ne sont pas enregistrés

Répondre

1

Il n'y a aucun moyen de passer des arguments de la manière que vous décrivez.

En supposant un package.json:

... 
"scripts": { 
    .... 
    "somescript": "node one.js && node two.js" 
    .... 
} 
... 

Course à pied:

npm run somescript -- --foo=bar 

essentiellement court juste

node one.js && node two.js --foo=bar 

sur la coque du système par défaut (généralement bash ou cmd.exe).

npm ne connaît pas réellement les opérateurs de shell (c'est-à-dire &&), donc il ne peut pas transmettre d'arguments aux deux scripts.