javascript - 如何将命令行参数传递给嵌套脚本?

标签 javascript node.js npm node-modules npm-scripts

注意:这不是将 args 发送到顶级脚本,而是发送到由那个脚本调用的脚本

在我的 package.json 中,当我调用一个直接接受命令行参数的脚本时,它可以工作。但是当我调用一个调用另一个脚本的脚本时,它不会将命令行参数传递给它。我如何通过它们?

{
    ...
    "takes-args": "somemodule",
    "calls-takes-args": "npm run takes-args"
}

当我运行以下命令时,参数通过:

npm run takes-args -- -env dev

但是当我通过其他脚本运行它时,它永远不会获取 args。有什么方法可以将它们传递下去吗?也许通过变量标记,如美元符号?

//The top-level script gets the args, BUT takes-args does NOT
npm run calls-takes-args -- -env dev

有什么办法吗?

最佳答案

您的 scripts 字段应如下所示:

{
    ...
    "takes-args": "somemodule",
    "calls-takes-args": "npm run takes-args --"
}

请注意 calls-takes-args 末尾的 --

您在 -- 之后传递的任何内容都将直接附加到您正在运行的脚本中。当您运行 npm run calls-takes-args -- -env dev 时,这相当于运行 npm run takes-args -env dev。当然,那是行不通的。

如果将 -- 添加到 calls-takes-args,当你运行 npm run calls-takes-args -- -env devnpm run 运行 npm run takes-args -- -env dev。成功!

如果您不将任何参数传递给 calls-takes-args,则尾随 -- 不会有任何问题。


编辑:

如果你不能/不想修改你的package.json,你可以运行

npm run calls-takes-args -- -- -env dev

这将运行 somemodule -env dev

关于javascript - 如何将命令行参数传递给嵌套脚本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40495116/

相关文章:

javascript - 无法从 mapsDispatchToProps 访问 "props"

javascript - Angular 2+ window.onfocus 和 windows.onblur

javascript - Meteor.publish 回调未被调用

javascript - 在 Javascript 中重命名文档

node.js - 使用不同别名返回的 created_at 和 updated_at 的两列附加副本

node.js - grpc 服务器的 Node js 客户端

node.js - 无法使用npm安装oracle包

javascript - 无法使用 "xmlbuilder"node.js 模块在 XML 中创建 CDATA 部分

node.js - NodeJS - 如何解决本地模块上的 “Cannot find module” 错误?

node.js - 在本地开发中使用时,package.json 文件是否需要每个站点的唯一名称?