是否存在tsconfig.json属性可类型检查文件但排除其JS输出?
TypeScript类型检查与编译输出分离配置方案
针对你提到的两种项目结构,分别提供配置方案,实现对测试文件做类型检查但不将其打包到outFile中的需求:
一、/src与/test目录独立(同属项目根目录)
方案:拆分配置文件
创建两个tsconfig文件,分别处理全量类型检查和生产编译:
tsconfig.json(全量类型检查)
这个配置只负责对所有源码和测试文件做类型检查,不输出任何文件:
{ "compilerOptions": { "strict": true, "target": "ESNext", // 其他你需要的通用编译选项 "noEmit": true // 仅做类型检查,不生成输出文件 }, "include": ["src/**/*", "test/**/*"] }
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
二、源码与测试文件混合在同一目录
同样采用拆分配置的思路,通过文件名规则区分测试文件:
tsconfig.json(全量类型检查)
包含目录下所有文件(包括*.test.ts),仅做类型检查:
{ "compilerOptions": { "strict": true, "target": "ESNext", "noEmit": true }, "include": ["src/**/*"] }
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
相关产品推荐
相关产品推荐

