将命令行parameter passing给npm'pre'脚本和多个命令的脚本

有没有办法将命令行parameter passing给npm'pre'脚本或运行多个命令的脚本?

假设一个简单的脚本mySexyScript.js只是注销process.argv:

 console.log(process.argv); 

这工作

用npm脚本:

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

运行:

 npm run sexyscript -- --foo=bar 

按照预期将参数logging到控制台。

'pre'脚本 – 这是行不通的

用npm脚本:

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

运行:

 npm run sexyscript -- --foo=bar 

参数不会传递给mySexyScript,并且不会logging

多个命令 – 这也是行不通的

用npm脚本:

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

运行:

 npm run sexyscript -- --foo=bar 

参数不会传递给mySexyScript,并且不会logging

没有办法像你所描述的那样通过参数。

假设一个package.json

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

运行:

 npm run somescript -- --foo=bar 

基本上只是运行

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

在默认的系统shell(通常是bashcmd.exe )上。

npm实际上并不知道shell运算符(即&& )的任何内容,所以它不能将args传递给这两个脚本。