如果一个目录下存在一个 tsconfig.json
文件,那么它意味着这个目录是 TypeScript
项目的根目录。一个项目可以通过以下方式之一来编译:
- 不带任何输入文件的情况下调用
tsc
,编译器会从当前目录开始去查找 tsconfig.json
文 件,逐级向上搜索父目录。 - 不带任何输入文件的情况下调用
tsc
,且使用命令行参数 --project
(或 -p
)指定一个包含 tsconfig.json
文件的目录。 - 当命令行上指定了输入文件时,
tsconfig.json
文件会被忽略。
如果 tsconfig.json
中没有任何配置,会按照默认配置编译当前目录下所有 ts
文件(ts
、d.ts
、tsx
)。
文件选项
files
编译器需要编译的单个文件列表(相对或绝对文件路径)。
{"files": ["src/a.ts"]
}
此时执行 tsc
命令,编译器会编译 src/a.ts
文件。
include
编译器需要编译的文件或者目录
{"include": ["src"]
}
此时执行 tsc
命令,编译器会编译 src
下的所有文件。
includes
配置支持 glob
通配符:\*
、?
、\*\*
:
{"include": ["src/*"]
}
此时执行 tsc
命令,编译器会编译 src
下一级目录的文件。
编译器会编译include
和files
合并后的内容。
exclude
编译器需要排除的文件或者目录,默认会排除 node_modules
目录下的所有文件和声明文件。
{"exclude": ["src/lib"]
}
- 如果
exclude
存在,exclude
配置优先级高于 files
和 includes
配置 exclude
也配置支持 glob
通配符:\*
、?
、\*\*
extend
配置文件之间是可以继承的,我们可以抽离基础部分方便复用。
{"files": ["src/a.ts"],"include": ["src"],"exclude": ["src/lib"]
}
{"extends": "./tsconfig.base.json"
}
在主配置文件中,设置选项会覆盖掉继承文件中的相同的配置项。
compileOnSave
在保存文件时,编译器自动编译。
{"compileOnSave":true
}
然而,需要 TypeScript 1.8.4 及以上版本,且只有个别 IDE
支持:
- Visual Studio 2015 with Update 3
- JetBrains WebStorm
- Atom with atom-typescript
笔者亲测,vscode 安装插件 TypeScript Auto Compiler
可行。