c8 是 v8 原生代码覆盖率工具,比 istanbul 更快更准且无需修改源码,支持现代 js/ts;可通过 npm 安装或 vitest 内置启用,支持 cli 配置与阈值校验。

c8 是 V8 引擎原生的代码覆盖率工具,比基于 Babel 插桩的 istanbul 更快、更准确,且无需修改源码。它特别适合现代 JavaScript(含 ES Modules、Top-level await、动态 import)和 TypeScript 项目。
安装与基础集成
在项目中安装 c8:
- 作为开发依赖:
npm install --save-dev c8 - 若使用 Vitest,推荐直接启用其内置 c8 支持(Vitest ≥ 1.0 默认支持)
- 若搭配其他测试框架(如 Mocha 或自定义脚本),c8 可直接包裹执行命令
运行测试并生成覆盖率报告
最简方式是用 c8 启动测试命令:
DMap GL地图JSAPI(dmapgl)开发指南。用于编写、审查、调试 DMap 地图 API 代码,涵盖地图初始化、覆盖物渲染、图层管理、事件处理、控件交互等任务。当用户提及 dmap、dmapgl、jsapi‑gl 或相关地图开发需求时自动触发。
-
npx c8 npm test(假设test脚本运行 Jest/Mocha/Vitest 等) -
npx c8 --reporter=html --reporter=text-summary vitest(显式指定报告格式) - 默认输出到
coverage/目录,含 HTML、text-summary、lcov 等格式
关键配置项说明
c8 支持通过 CLI 参数或 c8.config.js 配置,常用选项包括:
-
--branches=true:启用分支覆盖率(默认开启) -
--lines=true:启用行覆盖率(默认开启) -
--exclude=['**/test/**', '**/node_modules/**']:排除不参与统计的路径 -
--all:包含未执行的源文件(用于识别完全未覆盖的模块) -
--check-coverage --lines 90 --branches 80:CI 中校验阈值,未达标则退出非零状态
与 Vitest 深度配合(推荐组合)
Vitest 内置对 c8 的一级支持,只需在 vitest.config.ts 中启用:
- 设置
test.coverage.enabled = true - 指定提供者:
test.coverage.provider = 'c8' - 可选配输出目录与格式:
test.coverage.reporter = ['html', 'text-summary'] - 运行
vitest run --coverage即自动调用 c8,支持 ESM 和多线程并行收集










