878 words
4 minutes
TSConfig 根字段配置
2025-02-26 10:40:16
2025-12-24 23:45:46

← 返回 TSConfig 参考指南


在 TSConfig 的开头是根选项配置 - 这些选项与 TypeScript 或 JavaScript 项目的设置方式有关。

files#

指定要包含在程序中的文件白名单。如果找不到任何文件,则会发生错误。

{
  "compilerOptions": {},
  "files": [
    "core.ts",
    "sys.ts",
    "types.ts",
    "scanner.ts",
    "parser.ts",
    "utilities.ts",
    "binder.ts",
    "checker.ts",
    "tsc.ts"
  ]
}

当你只有少量文件,不需要使用通配符来引用多个文件时,这个选项很有用。如果需要引用多个文件,请使用 include

  • 默认值:false
  • 相关配置:includeexclude
  • 发布版本:1.5

extends#

extends 的值是一个字符串,包含要继承的另一个配置文件的路径。该路径可以使用 Node.js 风格的解析。

基础文件中的配置首先被加载,然后被继承配置文件中的配置覆盖。配置文件中找到的所有相对路径都将相对于它们所在的配置文件进行解析。

值得注意的是,继承配置文件中的 filesincludeexclude 会覆盖基础配置文件中的相应配置,并且配置文件之间不允许循环引用。

目前,唯一被排除在继承之外的顶层属性是 references

示例#

configs/base.json:

{
  "compilerOptions": {
    "noImplicitAny": true,
    "strictNullChecks": true
  }
}

tsconfig.json:

{
  "extends": "./configs/base",
  "files": ["main.ts", "supplemental.ts"]
}

tsconfig.nostrictnull.json:

{
  "extends": "./tsconfig",
  "compilerOptions": {
    "strictNullChecks": false
  }
}

在配置文件中找到的具有相对路径的属性(不包括那些被排除在继承之外的属性)将相对于它们所在的配置文件进行解析。


include#

指定要包含在程序中的文件名或模式数组。这些文件名相对于包含 tsconfig.json 文件的目录进行解析。

{
  "include": ["src/**/*", "tests/**/*"]
}

这将包含以下文件:

.
├── scripts                ⨯
│   ├── lint.ts            ⨯
│   ├── update_deps.ts     ⨯
│   └── utils.ts           ⨯
├── src                    ✓
│   ├── client             ✓
│   │    ├── index.ts      ✓
│   │    └── utils.ts      ✓
│   ├── server             ✓
│   │    └── index.ts      ✓
├── tests                  ✓
│   ├── app.test.ts        ✓
│   ├── utils.ts           ✓
│   └── tests.d.ts         ✓
├── package.json
├── tsconfig.json
└── yarn.lock

includeexclude 支持使用通配符来创建 glob 模式:

  • * 匹配零个或多个字符(不包括目录分隔符)
  • ? 匹配任意一个字符(不包括目录分隔符)
  • **/ 匹配任意层级的嵌套目录

如果模式中的最后一个路径段不包含文件扩展名或通配符字符,则将其视为目录,并包含该目录中具有支持扩展名的文件(默认为 .ts、.tsx 和 .d.ts,如果设置 allowJs 为 true,则包括 .js 和 .jsx)。

  • 默认值:如果指定了 files,则为 [];否则为 **/*
  • 相关配置:filesexclude
  • 发布版本:2.0

exclude#

指定在解析 include 时应跳过的文件名或模式数组。

重要提示:exclude 仅改变由 include 设置包含的文件。被 exclude 排除的文件仍可能由于代码中的 import 语句、类型引用、/// <reference 指令或在 files 列表中指定而成为代码库的一部分。

这不是阻止文件包含在代码库中的机制 - 它只是改变 include 设置查找的内容。

  • 默认值:node_modulesbower_componentsjspm_packagesoutDir
  • 相关配置:includefiles
  • 发布版本:2.0

references#

项目引用是一种将 TypeScript 程序结构化为更小部分的方式。使用项目引用可以大大改善构建和编辑器交互时间,在组件之间强制执行逻辑分离,并以新的和改进的方式组织代码。

你可以在手册的项目引用部分阅读更多关于引用如何工作的信息。

  • 默认值:false
  • 发布版本:3.0
TSConfig 根字段配置
https://0bipinnata0.my/posts/typescript/tsconfig/00-root-fields/
Author
0bipinnata0
Published at
2025-02-26 10:40:16