为什么双破折号可以与 npm 一起使用更多命令选项?

为什么双破折号可以与 npm 一起使用更多命令选项?

我刚刚遇到这个命令:

npm run script ./src/automation/automation_main.ts -- -i payroll_integration

我在谷歌上搜索了双破折号,它似乎表示命令选项的结束,根据这个答案: https://unix.stackexchange.com/a/11382/47958

我不明白的是为什么双破折号(-i)后面有命令选项。即使在双破折号之后我们仍然可以包含命令选项吗?

我运行了带有和不带有双破折号的上述脚本,并且两者似乎都在运行。

答案1

您的示例命令中的情况是有两个程序被调用,并且它们都使用命令行参数。您正在调用npmnpm并将遵守run script调用脚本的参数automation_main.ts。所有参数都没有用引号引起来(也许这对于这种 npm 命令是必需的)。

这个参数-i payroll_integration显然是针对脚本的,而不是针对 npm 的。你如何说服 npm 不要尝试解析它(这可能会导致错误)?

答案:你插入一个参数,告诉 npm 该行的其余单词不是 npm 的参数。这是--,意思是“你的论点到此为止,不用担心其余的”。 Npm 将删除其参数,直到并包括--,并调用脚本,并显示该行的其余部分以供脚本解析和使用。

请注意,虽然bashnpm理解该--参数(正如许多其他 GNU 实用程序所做的那样),但有些程序不理解它,并且不会按照我在此处描述的npm.

相关内容