如何在.nycrc中配置基于目录的coverageThreshold覆盖率阈值
nyc按目录配置差异化覆盖率阈值解决方案
nyc原生支持按目录/文件匹配规则设置不同的覆盖率阈值,两种常用实现方案如下:
方案1:直接在.nycrc.json中配置(推荐,nyc v14及以上版本支持)
在原有配置基础上新增thresholds字段,既可以保留全局兜底阈值,也可以为任意glob匹配的路径设置单独阈值,示例配置:
{ "reporter": ["lcov", "text-summary"], "temp-dir": "coverage", "check-coverage": true, "include": ["src/**/*"], "thresholds": { "global": { "branches": 10, "lines": 10, "functions": 10, "statements": 10 }, "src/utils/**/*.js": { "branches": 80, "lines": 90, "functions": 100, "statements": 90 }, "src/components/**/*.js": { "branches": 60, "lines": 70, "functions": 70, "statements": 70 }, "src/mock/**/*.js": { "branches": 0, "lines": 0, "functions": 0, "statements": 0 } } }
配置规则说明:
global下的配置为全局兜底阈值,所有未匹配到单独规则的文件都会使用该阈值校验- 自定义路径的键为glob匹配规则,优先级高于global,匹配范围越具体优先级越高
- 可根据项目实际情况调整匹配路径、文件后缀以及对应的阈值要求
方案2:通过多轮命令行调用实现(兼容所有版本)
如果使用的nyc版本较低不支持thresholds配置项,可以通过多次执行nyc check-coverage命令实现差异化校验,可将以下命令写成脚本统一执行:
# 全局覆盖率校验 npx nyc check-coverage --branches 10 --lines 10 --functions 10 --statements 10 # 校验utils目录覆盖率 npx nyc check-coverage --include 'src/utils/**/*.js' --branches 80 --lines 90 --functions 100 --statements 90 # 校验components目录覆盖率 npx nyc check-coverage --include 'src/components/**/*.js' --branches 60 --lines 70 --functions 70 --statements 70
注意事项:
- 命令中的glob路径需要用单引号包裹,避免shell提前解析通配符导致匹配失效
- 可根据需求灵活增减校验规则,也可以自行添加自定义判断逻辑
内容的提问来源于stack exchange,提问作者KamilRizatdinov
相关产品推荐
相关产品推荐

