c8 是基于 v8 原生能力的轻量级 javascript 覆盖率工具,支持行、分支、函数、语句四类指标,开箱即用于 vitest 或 node:test,无需插桩,生成 html 与终端报告。

c8 是目前 JavaScript 项目中轻量、精准且开箱即用的覆盖率工具,尤其适合与 Vitest 或 Node.js 内置测试运行器(node:test)搭配使用。它基于 V8 引擎的原生代码覆盖率能力,无需转译插桩,能直接捕获行、分支、函数、语句四类指标,并在终端和 HTML 报告中清晰呈现。
快速启用 c8 查看详细报告
安装后只需一条命令即可生成完整报告:
- 安装:
npm install --save-dev c8 - 运行测试并收集覆盖率:
npx c8 npm test(假设test是你的测试脚本) - 自动生成
coverage/目录,打开coverage/index.html即可浏览交互式报告
HTML 报告里重点看什么
打开 index.html 后,顶部汇总栏显示全局覆盖率,点击具体文件可深入查看细节:
-
Lines:实线覆盖百分比(如
94.2% (102/108)),红色标记未执行行 -
Branches:分支覆盖率(如
83.3% (30/36)),黄色高亮“部分覆盖”分支(例如if/else只走了一边) - Functions 和 Statements:分别反映函数定义与语句级执行情况
- 源码视图中,每行左侧数字旁有颜色标识:绿色=全覆盖,黄色=部分覆盖,红色=未覆盖
提升报告可用性的常用配置
在 package.json 的 scripts 或 c8.config.js 中添加以下配置,让报告更贴合实际需求:
-
--reporter=html --reporter=text-summary:同时输出网页版 + 终端精简摘要 -
--exclude="**/*.test.js" --exclude="**/test/**":排除测试文件,避免拉低覆盖率数值 -
--temp-directory=.c8:指定临时数据目录,便于 CI 中清理或合并 -
--check-coverage --lines=90 --branches=85:本地开发时启用阈值检查,不达标则退出非零状态
配合 Vitest 使用更顺手
Vitest 官方推荐 c8 作为覆盖率后端,只需在 vitest.config.ts 中简单配置:
- 启用:
coverage: { provider: 'c8' } - 运行:
vitest run --coverage,自动调用 c8 并生成标准报告 - 优势:支持 ESM、TS、动态导入等现代语法,无需额外配置转译
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











