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

13

有没有一种方法可以将命令行参数传递给npm的“pre”脚本或运行多个命令的脚本?

假设有一个简单的脚本mySexyScript.js,它只记录出process.argv:

console.log(process.argv);

这个有效

通过npm脚本实现:

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

跑步:

npm run sexyscript -- --foo=bar

预期的参数已经被记录到控制台。

'pre'脚本 - 这行不通

使用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个回答

7

你描述的方法无法传递参数。

假设有一个package.json

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

运行中:

npm run somescript -- --foo=bar

基本上只是运行。
node one.js && node two.js --foo=bar

在默认的系统shell上(通常是bash或cmd.exe),npm实际上并不知道任何关于shell操作符(如&&)的内容,因此它无法将参数传递给两个脚本。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接