为什么无需--分隔符即可将.作为参数传递给npm命令?
为什么npm传递
.参数不需要--分隔符 该现象由npm的命令行参数分类解析规则决定:
- 所有带
-/--前缀的参数会被npm默认识别为npm自身的配置选项,不会直接透传给执行的脚本;如果要把这类带前缀的参数传递给脚本,必须使用--分隔符标记,告知npm分隔符之后的所有内容均属于待执行脚本的参数。 - 不带任何
-前缀的普通位置参数(比如.、文件路径、无横线前缀的字符串等),不会被npm识别为自身配置项,会直接透传给对应脚本,不需要额外添加--分隔符。
对应场景说明:
npm test .中的.属于无横线前缀的普通位置参数,npm会直接将其拼接到package.json中定义的react-app-rewired test命令末尾,相当于执行react-app-rewired test .,参数可被正常识别。--coverage属于带--前缀的标识参数,若直接执行npm test --coverage,npm会尝试将--coverage作为自身命令选项处理,但npm test内置无该配置,会直接忽略该参数,不会传递给脚本;只有添加--分隔符后,--coverage才会被透传给react-app-rewired test执行。
常见的同类场景还有传递测试文件路径:npm test src/utils/format.test.js同样不需要添加--,因为文件路径属于普通位置参数,可被npm直接透传。
内容的提问来源于stack exchange,提问作者Mario Petrovic
相关产品推荐
相关产品推荐

