You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在TypeScript库项目中用nyc(istanbul)排除测试代码生成覆盖率报告?

解决nyc生成TypeScript项目覆盖率报告时排除测试代码的问题

针对你的项目结构,我给你整理了具体的配置和操作步骤,帮你精准生成仅包含业务代码的覆盖率报告:

1. 确保nyc依赖已安装

如果还没装nyc,先通过包管理器安装开发依赖:

npm install nyc --save-dev
# 或者用yarn
yarn add nyc --dev

2. 配置nyc的排除/规则

推荐在项目根目录的package.json中添加nyc配置字段,这样更直观易维护:

"nyc": {
  // 仅纳入需要统计覆盖率的编译后业务代码
  "include": [
    "build/lib/**/*.js"
  ],
  // 排除所有测试相关文件,包括源码中的测试用例和编译后的测试代码
  "exclude": [
    "build/test/**/*.js",
    "build/test/**/*.spec.d.ts",
    "src/test/**/*.spec.tsx",
    "src/@types/**/*.d.ts" // 可选:如果不需要统计自定义类型文件的覆盖率,可以加上
  ],
  // 指定覆盖率报告的格式,lcov用于生成可视化HTML报告,text-summary在控制台输出摘要
  "reporter": ["lcov", "text-summary"],
  // 因为你的编译代码已经包含内联源映射,设为true让nyc解析映射,将报告映射回TypeScript源码
  "sourceMap": true,
  "instrument": false // 不需要手动instrument,因为我们直接用编译后的代码
}

3. 编写覆盖率测试脚本

在package.json的scripts中添加测试+生成覆盖率的命令:

"scripts": {
  "test": "mocha build/test/**/*.spec.js", // 原测试命令
  "test:coverage": "nyc npm run test" // 基于原测试命令生成覆盖率
}

如果你的测试框架是Jest等其他工具,只需要把npm run test替换成对应的测试命令即可。

4. 生成并查看报告

执行以下命令生成覆盖率报告:

npm run test:coverage

执行完成后:

  • 控制台会输出覆盖率的文本摘要
  • 项目根目录会生成lcov-report文件夹,打开其中的index.html就能查看可视化的覆盖率报告,报告中的代码会映射回你的TypeScript源码,方便定位未覆盖的业务代码。

内容的提问来源于stack exchange,提问作者Shad Sterling

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 09:26:06