返回笔记列表

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

相关推荐