node.js - 使用多个命令将命令行参数传递给 npm 'pre' 脚本和脚本

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

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

'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,也没有记录

最佳答案

无法按照您描述的方式传递参数。

假设一个package.json:

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

运行:

npm run somescript -- --foo=bar

基本上只是运行

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

在默认系统外壳上(通常是 bashcmd.exe)。

npm 实际上对 shell 运算符一无所知(即 &&),因此它无法将 args 传递给两个脚本。

关于node.js - 使用多个命令将命令行参数传递给 npm 'pre' 脚本和脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42491208/

相关文章:

javascript - 开始使用 babel-cli

node.js - node_modules 目录包含在发布到 NPM 注册表的模块中

node.js - 如何引用nodejs脚本的全局模块?我可以在我的 Node.js 脚本中引用全局安装的模块吗?

node.js - Mongoose 连接

node.js - Socket.io 监听多个端口?

javascript - 从 NodeJS 发送数据而不重新渲染整个页面?

node.js - Elastic Beanstalk 通过 npm 脚本运行 'concurrently' 命令

node.js - 安装时 NPM 权限错误

javascript - 向 npm 脚本提供部分路径名(作为参数)

node.js - 如何检测脚本是使用 npm 还是 yarn 运行?