背景
当我们在做 typescript 相关的项目时,总是不可避免的要配置 ts,但是每个配置项到底代表什么意思,以及我们可能需要哪些配置项呢?每次去查官网、查相关资料,感觉都比较费时费力。所以直接就把所有配置都整理出来,当作一个“字典”来用,这样就轻松了许多,不知道对大家有帮助吗?
配置详情
{
"compilerOptions": {
"target": "es5" ,
"module": "commonjs" ,
"lib": ["es6", "dom"] ,
"allowJs": true,
"checkJs": true,
"jsx": "preserve",
"declaration": true,
"declarationMap": true,
"sourceMap": true,
"outFile": "./dist/main.js",
"outDir": "./dist",
"rootDir": "./",
"composite": true,
"removeComments": true,
"noEmit": true,
"importHelpers": true,
"downlevelIteration": true,
"isolatedModules": true,
"strict": true ,
"noImplicitAny": true,
"strictNullChecks": true,
"strictFunctionTypes": true,
"strictBindCallApply": true,
"strictPropertyInitialization": true,
"noImplicitThis": true,
"alwaysStrict": true,
"noUnusedLocals": true,
"noUnusedParameters": true,
"noImplicitReturns": true,
"noFallthroughCasesInSwitch": true,
"moduleResolution": "node",
"baseUrl": "./",
"paths": {},
"rootDirs": [],
"typeRoots": [],
"types": [],
"allowSyntheticDefaultImports": true,
"esModuleInterop": true ,
"preserveSymlinks": true,
"sourceRoot": "",
"mapRoot": "",
"inlineSourceMap": true,
"inlineSources": true,
"experimentalDecorators": true
"emitDecoratorMetadata": true,
}
"files": [], // files可以配置一个数组列表,里面包含指定文件的相对或绝对路径,编译器在编译的时候只会编译包含在files中列出的文件,如果不指定,则取决于有没有设置include选项,如果没有include选项,则默认会编译根目录以及所有子目录中的文件。这里列出的路径必须是指定文件,而不是某个文件夹,而且不能使用* ? **/ 等通配符
"include": [], // include也可以指定要编译的路径列表,但是和files的区别在于,这里的路径可以是文件夹,也可以是文件,可以使用相对和绝对路径,而且可以使用通配符,比如"./src"即表示要编译src文件夹下的所有文件以及子文件夹的文件
"exclude": [], // exclude表示要排除的、不编译的文件,它也可以指定一个列表,规则和include一样,可以是文件或文件夹,可以是相对路径或绝对路径,可以使用通配符
"extends": "", // extends可以通过指定一个其他的tsconfig.json文件路径,来继承这个配置文件里的配置,继承来的文件的配置会覆盖当前文件定义的配置。TS在3.2版本开始,支持继承一个来自Node.js包的tsconfig.json配置文件
"compileOnSave": true, // compileOnSave的值是true或false,如果设为true,在我们编辑了项目中的文件保存的时候,编辑器会根据tsconfig.json中的配置重新生成文件,不过这个要编辑器支持
"references": [], // 一个对象数组,指定要引用的项目
}
include/exclude/files 三者的关系
首先我们明确一点,exclude
是有默认值的,如果我们没有设置 exclude
,那其默认值为 node_modules
、bower_components
、jspm_packages
和编译选项 outDir
指定的路径。
还有一点,files
的优先级是最高的,比如我们在 files
中指定了一些文件,但是又在 exclude
中把它们排除了,这是无效的,因为 files
的优先级更高,这些文件依然会被编译,但是如果 include
中包含,那么依然会被排除,由此可见这三者的优先级如下:
files > exclude > include
如果 files
和 include
都未设置,那么除了 exclude
排除的文件,编译器会默认包含路径下的所有 TS 文件。
typeRoots & types
typeRoots: 默认所有可见的 "@types" 包会在编译过程中被包含进来,node_modules/@types 文件夹下以及它们子文件夹下的所有包都是可见的,但是如果指定了typeRoots,只有typeRoots下面的包才会被包含进来
types: 如果指定了types,只有被列出来的包才会被包含进来,比如:
{
"compilerOptions": {
"types" : ["node", "lodash", "express"]
}
}
以上就是Typescript tsconfig.json的配置详情的详细内容,更多关于Typescript tsconfig.json配置的资料请关注编程网其它相关文章!