自动编译配置
ts文件必须编译成js文件,如果每次都需要手动编译太麻烦,我们可以进行相应的配置。
在项目中新建tsconfig.json
文件,加入如下内容
(为空对象即可)
{
}
在终端输入 tsc -w
,就可以编译所有ts文件,并且实时更新。
tsconfig. json
是ts编译器的配置文件,ts 编译器可以根据它的信息来将ts代码编译成js代码
tsconfig. json的配置
include
“include” 用来指定哪些ts文件需要被编译。
一个*表示任意文件,两个*表示任意目录
{
"include": [
// 一个*表示任意文件,两个*表示任意目录
"./src/**/*",
],
}
exclude
- "exclude"不需要被编译的文件目录
默认值: [“node_modules”, “bower_components”, “jspm_packages”]
{
"include": [
"./src/**/*",
],
"exclude": [
"./src/hello/**/*"
]
}
extends
- “extends”:定义被继承的配置文件
"extends":"./configs/base"
表示当前配置文件中会自动包含config目录下base.json中的所有配置信息
files
- “files” 指定被编译文件的列表,只有需要编译的文件少时才会用到
"files": [
"app.ts"
]
compilerOptions
compilerOptions编译器的选项,有内层配置:
target
:用来指定ts被编译为的ES的版本
选项:‘es3’, ‘es5’, ‘es6’, ‘es2015’, ‘es2016’, ‘es2017’, ‘es2018’, ‘es2019’, ‘es2020’, ‘es2021’, ‘es2022’, ‘esnext’module
:指定要使用的模块化的规范
可选值:‘none’, ‘commonjs’, ‘amd’, ‘system’, ‘umd’, ‘es6’, ‘es2015’, ‘es2020’, ‘es2022’, ‘esnext’, ‘node16’, ‘nodenext’lib
:用来指定项目中要使用的库
可选值:‘es5’, ‘es6’, ‘es2015’, ‘es7’, ‘es2016’, ‘es2017’, ‘es2018’, ‘es2019’, ‘es2020’, ‘es2021’, ‘es2022’, ‘esnext’, ‘dom’,…
默认是浏览器的环境库。
一般情况下默认即可,不需要我们进行修改。outDir
用来指定编译后文件所在的目录outFile
将代码合并为一个文件
设置outFile后,所有的全局作用域中的代码会合并到同一个文件中allowJs
是否对js.文件进行编译,默认是falsecheckJs
是否检查s代码是否符合语法规范,默认是falseremoveComments
编译后的文件是否移除注释,默认是falsenoEmit
:不生成编译后的文件,默认是falsenoEmitOnError
:当有错误时不生成编译后的文件,默认是falsealwaysStrict
:编译后的js文件使用严格模式,默认是false
严格模式的js:文件头部添加"use strict";
noImplicitAny
:不允许隐式的any类型,默认是falsenoImplicitThis
:不允许类型不明确的this,默认是falsestrictNullChecks
:严格检查空值,默认是falsestrict
:所有严格检查的总开关
eg:
{
"compilerOptions": {
"target": "ES6",
"module": "system",
"outDir": "./dist",
// "outFile": "./dist/app.js",
"allowJs": false,
"checkJs": false,
"removeComments": false,
"noEmit": false,
"noEmitOnError": false,
"alwaysStrict": true,
"noImplicitAny": false,
"noImplicitThis": false,
"strictNullChecks": false,
"strict": false
}
}
skipLibCheck
skipLibCheck 当配置为 true 时,编译器会跳过类型检查的库文件(即 .d.ts 文件)。默认值为 false,表示编译器会检查库文件中的类型错误。
这个选项主要用于加速编译过程。因为类型检查通常需要消耗一定的时间,而在某些情况下,我们可能并不关心库文件中是否有类型错误(例如,我们对库文件有足够的信任,或者我们只关心自己代码的类型错误),因此可以设置 skipLibCheck 为 true 来跳过类型检查,以提升编译速度。然而,这种做法存在风险,可能会忽略掉一些应当被检测出的错误。