一起养成写作习惯!这是我参与「掘金日新计划 · 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字符的所有文件 */
]
注意:在compilerOptions中allowJS设置为true时,同目录下有同名的JS文件和TS文件,只会编译TS文件。
exclude
"exclude"属性也是指定一个文件glob匹配模式列表,但是它和files和include的意思刚好相反,它指的是设置某些文件不被TS编译,通配符和include一样。如果"files"和"include"都没有被指定,编译器默认包含当前目录和子目录下所有的TypeScript文件(.ts, .d.ts 和 .tsx),排除在"exclude"里指定的文件。"exclude"默认情况下会排除node_modules,bower_components,jspm_packages和compilerOptions中outDir指定的目录