顶层配置字段
顶层配置字段是TSConfig文件的顶层配置项,这些配置项决定了TypeScript或者JavaScript项目的设置方式。
文件配置项-files
指定要包含在程序中的文件的允许列表,如果该列表中的文件找不到,将会在类型检查/编译时报错。主要应用于程序包含较少的文件,如果包含的文件较多,可以通过glob
的方式设置顶层配置项include
。
默认值: false
{
"compilerOptions": {},
"files": [
"core.ts",
"sys.ts",
"types.ts",
"scanner.ts",
"parser.ts",
"utilities.ts",
"binder.ts",
"checker.ts",
"tsc.ts"
]
}
扩展配置项-extends
配置项的值是一个字符串,为要继承的另一个配置文件的路径,该路径应该可以通过Node.js解析,如果路径为相对路径,那么这相对路径为基于当前配置文件的相对路径。
首先加载配置文件中extends
配置的文件,如果当前的配置项和继承的配置文件的配置项冲突,那么当前配置项将覆盖继承配置项。
默认值: false
# tsconfig.base.json
{
"compilerOptions": {
"noImplicitAny": true,
"strictNullChecks": true
}
}
> 值得注意的是,当前配置文件中的`files`、`include`和`exclude`会覆盖继承的配置文件中的`files`、`include`和`exclude`,并且配置文件之间不允许循环继承。
# tsconfig.json
{
"extends": "./configs/base",
"files": ["main.ts", "supplemental.ts"]
}
当前配置文件中的
files
、include
和exclude
会覆盖继承的配置文件中的files
、include
和exclude
,并且配置文件之间不允许循环继承。
包含配置项-include
包含配置项指定一个文件名称或者glob
模式的数组,文件名称的路径为相对于当前配置文件所在的目录。
默认值:如果配置了files
,为[]
,否则为**/*
# 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
include
和exclude
配置项支持的glob
模式的通配符
*
:匹配除路径分隔符之外的0个或多个字符(>=0)?
:匹配除路径分隔符之外的多个字符(>=1)**/
:匹配多个层级的目录
如果模式中最后一段不包含文件扩展名或者通配符,那么匹配该目录下的所有文件(支持的文件扩展为:.ts
,.tsx
,.d.ts
,如果allowJs
配置为true
,还支持.js
,.jsx
)
排除配置项-exclude
指定在解析include
配置的文件时应该排除在外的文件名称或者glob
模式数组。
默认值:node_modules
, bower_components
,jspm_packages
,outDir
配置的值
- 不是为了阻止文件包含在代码中的目的
- 仅仅改变
include
匹配的文件的结果- 如果在代码中通过
import
引入,或者类型引入,/// <reference
包含,files
中包含,仍然会包含exclude
排除的文件
参考配置项-references
references
配置项是一种将 TypeScript 程序构建为更小的片段的方法。使用references
可以极大地缩短构建、编辑器交互的时间,组件之间的逻辑分离,改善代码组织结构,了解references
如何工作的更多信息可以参考 Project References。