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

是否存在tsconfig.json属性可类型检查文件但排除其JS输出?

TypeScript类型检查与编译输出分离配置方案

针对你提到的两种项目结构,分别提供配置方案,实现对测试文件做类型检查但不将其打包到outFile中的需求:

一、/src与/test目录独立(同属项目根目录)

方案:拆分配置文件

创建两个tsconfig文件,分别处理全量类型检查和生产编译:

  1. tsconfig.json(全量类型检查)
    这个配置只负责对所有源码和测试文件做类型检查,不输出任何文件:
{
  "compilerOptions": {
    "strict": true,
    "target": "ESNext",
    // 其他你需要的通用编译选项
    "noEmit": true // 仅做类型检查,不生成输出文件
  },
  "include": ["src/**/*", "test/**/*"]
}
  1. tsconfig.build.json(生产编译)
    继承通用配置,只编译src目录下的文件并生成指定的outFile:
{
  "extends": "./tsconfig.json",
  "compilerOptions": {
    "noEmit": false,
    "outFile": "./dist/output.js",
    // 注意:使用outFile必须将module设为AMD或System,ES/CommonJS不支持合并单文件
    "module": "AMD"
  },
  "include": ["src/**/*"],
  "exclude": ["test/**/*"]
}

运行方式

  • 执行全量类型检查:tsc -p tsconfig.json
  • 编译生产代码:tsc -p tsconfig.build.json

二、源码与测试文件混合在同一目录

同样采用拆分配置的思路,通过文件名规则区分测试文件:

  1. tsconfig.json(全量类型检查)
    包含目录下所有文件(包括*.test.ts),仅做类型检查:
{
  "compilerOptions": {
    "strict": true,
    "target": "ESNext",
    "noEmit": true
  },
  "include": ["src/**/*"]
}
  1. tsconfig.build.json(生产编译)
    继承通用配置,排除所有*.test.ts文件,仅编译业务源码到outFile:
{
  "extends": "./tsconfig.json",
  "compilerOptions": {
    "noEmit": false,
    "outFile": "./dist/output.js",
    "module": "AMD"
  },
  "include": ["src/**/*.ts"],
  "exclude": ["src/**/*.test.ts"]
}

替代方案(无需拆分配置)

如果不想维护多个配置文件,可通过命令行参数分别执行检查和编译:

  • 全量类型检查:tsc --noEmit
  • 编译生产代码:tsc --outFile ./dist/output.js --exclude "**/*.test.ts"

关键注意点

使用outFile时,compilerOptions中的module必须设置为AMD或System,TypeScript不支持将ES模块或CommonJS模块合并为单个文件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 19:22:28