将命令行参数传递给npm' pre'包含多个命令的脚本和脚本

时间:2017-02-27 16:47:38

标签: node.js npm npm-scripts

有没有办法将命令行参数传递给npm' pre'脚本或运行多个命令的脚本?

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

console.log(process.argv);

此作品

使用npm脚本:

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

运行:

npm run sexyscript -- --foo=bar

参数按预期记录到控制台。

'预'脚本 - 这不起作用

使用npm脚本:

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

运行:

npm run sexyscript -- --foo=bar

参数未传递给mySexyScript且未记录

多个命令 - 这也不起作用

使用npm脚本:

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

运行:

npm run sexyscript -- --foo=bar

参数未传递给mySexyScript且未记录

1 个答案:

答案 0 :(得分:1)

没有办法按照你描述的方式传递args。

假设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传递给两个脚本。