typescript的include一般怎么配置
include 告诉 TypeScript"编译这些文件",而 exclude 负责"排除这些文件"——通常只配置 include 指向 src/ 就足够了,node_modules 默认会被排除。
TypeScript 的 include 配置
include 用于指定哪些文件需要被 TypeScript 编译。
基本语法
{
"include": ["src/**/*", "tests/**/*"]
}
| 通配符 | 含义 |
|---|---|
* |
匹配任意文件(不含子目录) |
**/* |
匹配任意文件(含所有子目录) |
**/*.ts |
匹配所有 .ts 文件(含子目录) |
[src, tests] |
匹配 src 或 tests 目录 |
常见配置场景
1️⃣ 小型项目(所有文件在根目录)
{
"include": ["*.ts", "*.d.ts"]
}
2️⃣ 标准项目(源码在 src 目录)
{
"include": ["src/**/*"]
}
这会包含 src/ 下所有 .ts、.tsx、.d.ts 文件。
3️⃣ 包含测试文件
{
"include": [
"src/**/*",
"tests/**/*"
]
}
4️⃣ 包含特定类型文件
{
"include": [
"src/**/*.ts",
"src/**/*.tsx",
"types/**/*.d.ts"
]
}
实际项目示例
React 项目
{
"include": [
"src/**/*",
"src/**/*.tsx"
],
"exclude": ["node_modules", "dist"]
}
Node.js 后端项目
{
"include": [
"src/**/*.ts",
"src/**/*.d.ts"
],
"exclude": ["node_modules", "dist", "**/*.spec.ts"]
}
monorepo 项目
{
"include": [
"packages/*/src/**/*",
"packages/*/types/**/*"
]
}
include vs exclude 的关系
{
"include": ["src/**/*"], // 先包含 src 下所有文件
"exclude": ["src/**/*.test.ts"] // 再排除测试文件
}
处理顺序:先 include,再 exclude 过滤。
默认行为(不配置 include)
如果不配置 include,TypeScript 默认包含:
所有 .ts、.tsx、.d.ts 文件(除了被 exclude 排除的)
但不包括 .js 文件(除非 allowJs: true)。
最佳实践
| 场景 | 推荐配置 |
|---|---|
源码在 src/ |
"include": ["src/**/*"] |
| 有测试文件 | "include": ["src/**/*", "test/**/*"] |
| Monorepo | 每个子包独立配置 |
| 库项目 | 包含 src/,排除 dist/、node_modules/ |
| 应用项目 | 包含 src/,排除 node_modules/、build/ |
完整示例
{
"compilerOptions": {
"target": "ES2020",
"module": "commonjs",
"strict": true,
"outDir": "./dist"
},
"include": [
"src/**/*.ts", // 源码
"types/**/*.d.ts" // 自定义类型声明
],
"exclude": [
"node_modules", // 排除依赖
"dist", // 排除输出目录
"**/*.test.ts", // 排除测试文件
"**/*.spec.ts"
]
}
一句话总结
include 告诉 TypeScript"编译这些文件",而 exclude 负责"排除这些文件"——通常只配置 include 指向 src/ 就足够了,node_modules 默认会被排除。
ts