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

如何配置tsc不输出测试文件但仍执行类型检查?测试文件匹配**/*.test.ts

配置TypeScript编译器实现测试文件类型检查但不输出编译产物

要实现这个需求,有两种实用方案,可根据项目规模和工作流选择:

方案一:拆分编译与类型检查命令

适合小型项目,操作简单直接:

  1. 在项目根目录的tsconfig.json中,将测试文件加入exclude列表,确保编译时跳过它们,不会生成对应的.js/.d.ts文件:
{
  "compilerOptions": {
    // 你的其他编译配置,比如target、module、outDir等
  },
  "exclude": ["**/*.test.ts", "node_modules"]
}
  1. 在package.json的scripts里添加专门的类型检查命令,用--noEmit参数只做类型校验不输出文件,同时指定要检查的测试文件:
{
  "scripts": {
    "build": "tsc", // 编译业务代码,不处理测试文件
    "type-check:tests": "tsc --noEmit --include **/*.test.ts" // 仅检查测试文件类型
  }
}

执行npm run build只会输出业务代码的编译产物,执行npm run type-check:tests就能验证测试文件的类型正确性。

方案二:使用复合TypeScript配置

适合中大型项目,能统一管理配置:

  1. 根目录创建基础配置tsconfig.json,包含所有需要类型检查的文件(包括测试文件),并开启noEmit只做类型校验:
{
  "compilerOptions": {
    // 你的基础编译配置,比如target、module、strict等
    "noEmit": true
  },
  "include": ["src/**/*.ts"] // 假设所有代码(含测试)都在src目录下
}
  1. 新建tsconfig.build.json,继承根配置,覆盖noEmit为false,同时排除测试文件,专门用来编译输出产物:
{
  "extends": "./tsconfig.json",
  "compilerOptions": {
    "noEmit": false,
    "outDir": "./dist" // 指定编译产物输出目录
  },
  "exclude": ["**/*.test.ts"]
}
  1. 在package.json里配置对应脚本:
{
  "scripts": {
    "type-check": "tsc", // 检查所有文件(含测试)的类型
    "build": "tsc --project tsconfig.build.json" // 仅编译业务代码到dist目录
  }
}

执行npm run type-check会检查所有文件的类型,执行npm run build只会输出业务代码的产物,测试文件不会被编译输出。

两种方案都能满足需求:测试文件会被类型检查,但编译过程不会生成它们的输出文件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 03:45:54