TypeScript 最全tsconfig.json系列之files、include、exclude

962 阅读2分钟

一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第2天,点击查看活动详情

tsconfig.json

生成tsconfig.json

$ tsc -init

如果一个目录下存在一个tsconfig.json文件,那么它意味着这个目录是TypeScript项目的根目录。 tsconfig.json文件中指定了用来编译这个项目的根文件和编译选项。tsconfig.json的顶级属性包含如下:

{
  "files": [],
  "include": [],
  "exclude": [],
  "compilerOptions": {},
  "extends": {},
  "compileOnSave": {},
  "buildOptions": {},
  "watchOptions": {},
  "typeAcquisition": {},
  "references": {},
  "tsNodeModuleTypes": {},
  "tsNode": {}
}

files

"files"指定一个包含相对或绝对文件路径的列表。 ts会根据配置的files文件列表信息编译指定的ts文件。

"files": [
  "./learn01.ts",
  "./learn02.ts",
  "./src/learn03"
]

include

"include"属性指定一个文件glob匹配模式列表。和files一个意思,只是支持glob通配符,glob通配符有:

  • * 匹配0或多个字符(不包括目录分隔符)
  • ? 匹配一个任意字符(不包括目录分隔符)
  • **/ 递归匹配任意子目录

如果一个glob模式里的某部分只包含*.*,那么仅有支持的文件扩展名类型被包含在内(比如默认.ts.tsx,和.d.ts, 如果 allowJs设置能true还包含.js.jsx)。includes相对files而言可以批量指定ts文件可以指定一个或多个目录下的所有文件,比files更常用

"include": [
   "./learn02.ts", /** 单个文件**/
   "./src", /** src目录下所有文件以及子目录文件 */
   "./src/*", /* src下级目录文件 */
   "./src/le*", /* src下级目录中文件以le开头的所有文件 */
   "./le?rn*", /* 当前目录下le开头隔了一个任意字符后紧跟rn字符的所有文件 */
 ]

注意:在compilerOptionsallowJS设置为true时,同目录下有同名的JS文件和TS文件,只会编译TS文件。

exclude

"exclude"属性也是指定一个文件glob匹配模式列表,但是它和files和include的意思刚好相反,它指的是设置某些文件不被TS编译,通配符和include一样。如果"files""include"都没有被指定,编译器默认包含当前目录和子目录下所有的TypeScript文件(.ts.d.ts 和 .tsx),排除在"exclude"里指定的文件。"exclude"默认情况下会排除node_modulesbower_componentsjspm_packagescompilerOptionsoutDir指定的目录