ts-learnings/00_tsconfig-json.md
2019-04-01 09:48:34 +08:00

90 lines
3.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# tsconfig.json
[原文](https://www.typescriptlang.org/docs/handbook/tsconfig-json.html)
## 概述
某个目录下存在文件`tsconfig.json`那么就表明该目录是某个TypeScript项目的根目录。`tsconfig.json`文件指定了有哪些根文件,以及需要哪些编译器选项来对该项目进行编译。项目是以以下方式之一进行编译的:
## `tsconfig.json`**的运用
+ 通过不带有文件的方式调用 `tsc`命令,此时编译器从当前目录开始,进而沿父目录链往上搜索`tsconfig.json`文件by invoking `tsc` with no input files, in which case the compiler searches for the `tsconfig.json` file starting in the current directory and continuing up the parent directory chain
+ 通过不带有文件,但提供用于指定包含了`tsconfig.json`文件的目录路径,或指向某个包含了配置的有效的`.json`文件的`--project`(或仅`-p`)的命令行选项方式,来调用`tsc`命令。
当有在命令行上指定了文件时,`tsconfig.json`文件就会被忽略。
## 示例
`tsconfig.json`的一些示例文件:
+ 使用`files`属性
```json
{
"compilerOptions": {
"module": "commonjs",
"noImplicitAny": true,
"removeComments": true,
"preserveConstEnums": true,
"sourceMap": true
},
"files": [
"core.ts",
"sys.ts",
"types.ts",
"scanner.ts",
"parser.ts",
"utilities.ts",
"binder.ts",
"checker.ts",
"emitter.ts",
"program.ts",
"commandLineParser.ts",
"tsc.ts",
"diagnosticInformationMap.generated.ts"
]
}
```
+ 使用`include`与`exclude`属性
```json
{
"compilerOptions": {
"module": "system",
"noImplicitAny": true,
"removeComments": true,
"preserveConstEnums": true,
"outFile": "../../built/local/tsc.js",
"sourceMap": true
},
"include": [
"src/**/*"
],
"exclude": [
"node_modules",
"**/*.spec.ts"
]
}
```
## 详解Details
属性`compilerOptions`是可以省略的,在省略了该属性时,编辑器将使用默认选项。请参考完整的[编译器选项](#compiler-options)清单。
`files`属性取的是一个相对或绝对文件路径的清单。而`include`与`exclude`属性则取的是类似于glob的文件模式清单请参考 [Glob_(programming), Wikipedia](https://en.wikipedia.org/wiki/Glob_(programming))[glob介绍](https://www.jianshu.com/p/ce7cf53274bb)。支持以下glob通配符
+ `*` 匹配零个或更多字符(不包含目录分隔符,`*` matches zero or more characters(excluding directory separators)
+ `?` 匹配任意的一个字符(不包含目录分隔符,`?` matches any one character(excluding directory separators)
+ `**/` 递归地匹配所有子目录(`**/` recursively matches any subdirectory
在某个glob模式片段中仅包含了 `*``.*` 时,那么只有那些扩展被支持的文件才被包含进来(也就是`.ts`、`.tsx`与`.d.ts`,而在`allowJs`被设置为`true`的情况下,也包含`.jx`与`.jsx`)。