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

How to pass a command line argument to a nested script?

注意:这不是关于将 args 发送到顶级脚本,而是发送到由 that script

在我的 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 运行s npm run takes-args -- -env dev .成功!

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


编辑:

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

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

那将 运行 somemodule -env dev