npm命令中无参数双横杠(--)与带参数选项(如--no-watch)的区别
npm run命令中单独
--的作用说明 这是命令行工具的通用参数分隔约定,作用是明确分隔「当前执行命令的自有参数」和「要传递给子进程/底层脚本的参数」,并非npm独有特性。
具体到你的使用场景逻辑如下:
- 你执行的
npm run test本质是调用npm程序,运行package.json中配置的test脚本。如果直接在npm run test后面追加参数,npm会优先把这些参数识别为给自身的配置项,不会传递给test对应的脚本。 - 单独的
--就是给npm的分隔标识:该符号之后的所有内容,npm不需要做任何解析,直接原封不动传递给test对应的底层执行命令(Angular项目默认的test脚本对应ng test)。 - 你给出的示例命令
npm run test -- --no-watch --browsers=ChromeHeadlessCI,实际等效于直接执行ng test --no-watch --browsers=ChromeHeadlessCI,后面两个--开头的选项,都是传给Angular测试命令的配置参数。
如果去掉这个单独的--,直接执行npm run test --no-watch,npm会把--no-watch当成自己的参数处理,不会传递给ng test,你需要的关闭监听模式的配置就不会生效。
这个约定的通用场景参考:如果你要删除一个名字为-f的文件,直接执行rm -f会被系统识别为「强制删除」的选项,必须执行rm -- -f才能正确删除目标文件,用的就是同一个参数分隔逻辑。
内容的提问来源于stack exchange,提问作者Andreycw
相关产品推荐
相关产品推荐

