编译文件时,使用-w
指令后,TS编译器会自动的监视文件的变化,并在文件变化时对文件执行重新编译
示例
tsc xxx.ts -w
在目录下使用tsc --init
生成tsconfig.json
文件
在生成后可以直接通过tsc
命令直接编译文件目录下的所有js文件
tsc -w
命令则可以通过监听的方式,在文件变化的时候对文件执行重新编译
初始化
tsc --init
编译
tsc
自动编译
tsc -w
用来指定哪些文件会被编译
"include": [
"./src/**/*"
// 表示src所有目录(**)下的所有文件(*)都会被编译
],
**
表示任意目录
*
表示任意文件
用来指定哪些文件/目录不被编译
默认值:["node_modules", "bower_components", "jspm_ packages"]
加上outDir
选项指定的值
// 表示不包括
"exclude": [
"./src/2/*"
],
{
"include": [],
"outDir": "dist"
}
定义被继承的配置文件
"extends": "./configs/base",
上面的代码会自动包含config
目录下base.json
中所有的配置信息
用来指定需要编译的文件列表(注意,只能是文件,不能是文件夹)
{
"compilerOptions": {},
"files": [
"core.ts",
"sys.ts",
"types.ts",
"scanner.ts",
"parser.ts",
"utilities.ts",
"binder.ts",
"checker.ts",
"tsc.ts"
]
}
如果其中任意一个文件无法找到,都会抛出错误
tsconfig.json:10:5 - error TS5023: Unknown compiler option 'files'.
10 "files": ["a.ts", "c.ts"]
这个配置项适用于你想要指定的文件数量比较少,并且不需要使用 glob 模式匹配的情况。
编译器选项
表示编译器编译的目标
"target": "es5",
/* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017', 'ES2018', 'ES2019', 'ES2020', 'ES2021', or 'ESNEXT'. */
表示指定要使用的模块化的规范
"module": "ES6",
/* Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', 'es2020', or 'ESNext'. */
用来指定项目中要使用的库(一般不用写)
"lib": [],
/* Specify library files to be included in the compilation. */
'es5', 'es6', 'es2015', 'es7', 'es2016', 'es2017', 'es2018', 'es2019', 'es2020', 'es2021', 'esnext', 'dom', 'dom.iterable', 'webworker', 'webworker.importscripts', 'webworker.iterable', 'scripthost', 'es2015.core', 'es2015.collection', 'es2015.generator', 'es2015.iterable', 'es2015.promise', 'es2015.proxy', 'es2015.reflect', 'es2015.symbol', 'es2015.symbol.wellknown', 'es2016.array.include', 'es2017.object', 'es2017.sharedmemory', 'es2017.string', 'es2017.intl', 'es2017.typedarrays', 'es2018.asyncgenerator', 'es2018.asynciterable', 'es2018.intl', 'es2018.promise', 'es2018.regexp', 'es2019.array', 'es2019.object', 'es2019.string', 'es2019.symbol', 'es2020.bigint', 'es2020.promise', 'es2020.sharedmemory', 'es2020.string', 'es2020.symbol.wellknown', 'es2020.intl', 'es2021.promise', 'es2021.string', 'es2021.weakref', 'esnext.array', 'esnext.symbol', 'esnext.asynciterable', 'esnext.intl', 'esnext.bigint', 'esnext.string', 'esnext.promise', 'esnext.weakref'.
用来指定编译后的文件所在的目录
"outDir": "./dist",
/* Redirect output structure to the directory. */
将代码合并为一个文件
设置outFile后,所有的全局作用域中的代码会合并到同一个文件中
"outFile": "./",
/* Concatenate and emit output to single file. */
对js文件进行编译
"allowJs": true, /* Allow javascript files to be compiled. */
用于检查js代码,一般和allowJS一起用
"checkJs": true,
用于在编译时移除代码注释
"removeComments":true
不生成编译后的文件
"noEmit":true
当出错时不编译文件
"noEmitOnError":true