Jest --findRelatedTests在lint-staged中运行所有测试的问题排查
问题分析与解决
你的配置核心问题出在lint-staged版本过旧(v8.1.0),这个版本不会自动把暂存的文件路径传递给后续命令,导致jest --findRelatedTests没有收到具体的文件参数,jest就默认执行了所有测试用例。
两种解决办法
1. 升级lint-staged(推荐)
lint-staged从v9版本开始,会自动将匹配到的暂存文件作为参数传递给命令。你可以升级到较新的稳定版本:
npm install lint-staged@latest --save-dev
升级后不需要修改现有配置,jest --findRelatedTests会自动接收暂存的ts/tsx文件路径,只运行关联测试。
2. 旧版本兼容写法(仅临时过渡)
如果暂时不能升级,需要在命令里手动添加{stagedFiles}占位符,让lint-staged把文件路径传进去:
"lint-staged": { "*.{json,scss,md}": [ "prettier --write", "git add" ], "*.{ts,tsx}": [ "eslint --quiet", "prettier --write", "jest --findRelatedTests {stagedFiles}", "git add" ] }
额外提醒:你的husky版本也比较老(v1.3.1),如果升级lint-staged后出现钩子不触发的问题,建议同步升级husky到v4+或v8+,避免版本兼容问题。
内容的提问来源于stack exchange,提问作者HaveSpacesuit
相关产品推荐
相关产品推荐

