Powershell下通过npm脚本运行带--collectCoverageFrom的Jest测试时如何转义引号和斜杠
解决方案
首先确认两个核心根因:
- Powershell 解析参数时会自动剥掉外层单引号,导致
collectCoverageFrom需要的数组字符串格式被破坏 - Jest 本身跨平台兼容正斜杠路径,无需专门替换为Windows反斜杠,反而反斜杠会触发转义逻辑导致路径匹配失效
可行写法1:双引号包裹参数+反引号转义内部双引号
npm test "--" ExampleComponent --collectCoverageFrom="[`"**/ExampleComponent.tsx`"]" --watch
你可以通过加--dry-run参数验证jest实际接收的参数:
npm test "--" ExampleComponent --collectCoverageFrom="[`"**/ExampleComponent.tsx`"]" --watch --dry-run
输出的jest调用参数应该和你在Bash中得到的完全一致:
jest "ExampleComponent" "--collectCoverageFrom=[\"**/ExampleComponent.tsx\"]" "--watch"
可行写法2:使用停止解析符号--%(仅 Powershell 适用)
如果你不想处理复杂转义,可以在npm命令后加--%,告诉Powershell不要解析后续的参数,直接原样传递:
npm --% test ExampleComponent --collectCoverageFrom='["**/ExampleComponent.tsx"]' --watch
这种写法和你原来的Bash命令几乎完全一致,不需要额外修改参数格式。
验证方法
运行命令后查看jest输出的覆盖率报告,确认仅ExampleComponent.tsx出现在覆盖率统计列表中即可。
内容的提问来源于stack exchange,提问作者Ashley Wilson
相关产品推荐
相关产品推荐

