配置
tsconfig.json 是用于配置TypeScript编译时的配置选项:https://www.typescriptlang.org/tsconfig
{
"compilerOptions": {
"target": "esnext",
"module": "esnext",
"strict": true,
"jsx": "preserve",
"importHelpers": true,
"moduleResolution": "node",
"skipLibCheck": true,
"esModuleInterop": true,
"allowSyntheticDefaultImports": true,
"sourceMap": true,
"baseUrl": ".",
"types": ["webpack-env"],
"paths": {
"@/*": ["src/*"]
},
"lib": ["esnext", "dom", "dom.iterable", "scripthost"]
},
"include": [
"src/**/*.ts",
"src/**/*.tsx",
"src/**/*.vue",
"tests/**/*.ts",
"tests/**/*.tsx"
],
"exclude": ["node_modules"]
}
=====================
compilerOptions 编译选项
就是告诉ts,编译成js时有哪些规则。
一般创建通过脚手架创建的项目,会有默认的配置,除非你从零开始自己配置,否则用默认的就可以了。
如果项目使用了babel进行编译,也会读取这个文件
{
"compilerOptions":{
// 指定编译的版本,默认会根据项目下.browserslistrc 文件(如果有的话),来看要编译成什么版本。
// esnext 表示用最新的es版本
// 兼容低版本浏览器,一般会填es5
"target":"esnext",
// 目标代码需要使用的模块化方案
// 如es 的 import/export,commonjs 的 request/module.exports,amd,umd(多种模块化)等
"module":"esnext",
// 是否使用严格模式
"strict":true,
// 对jsx做什么处理,比如要不要转化成其他
// preserve 是不处理
"jsx": "preserve",
// 辅助导入功能
"importHelpers": true,
// 按nodejs的方式解析模块
"moduleResolution": "node",
// 跳过一些库的类型检测,对库里面的类型进行检测。库里面一些没用到的功能就没必要检测,而且库与库直接可能会有冲突,没必要都去检测
"skipLibCheck": true,
// 是否允许es 的 import/export,commonjs 的 request/module.exports,混合使用
"esModuleInterop": true,
"allowSyntheticDefaultImports": true,
// 是否生成映射文件,映射是ts变量名和编译后的js变量名进行映射,方便测试用
"sourceMap": true,
// 文件路径解析时,基本的url
"baseUrl": ".",
// 指定具体要解析的类型,如果不写这个,默认就是用上面t
"types": ["webpack-env"],
// 路径解析,下面写法是,如果你写@/xxx 这样的路径,默认帮你转为src/*。
// 这是一个数组,可以写多个,第一个匹配不上就匹配第二个,如此类推。
// 这个一定要配,否则vite.config.ts 里面配置的别名TS还是会报错的
"paths": {
"@/*": ["src/*"]
},
// 项目可以使用哪些库的类型,如dom库,才会有对应的写代码自动提示。
"lib": ["esnext", "dom", "dom.iterable", "scripthost"],
"outDir":"./dist", // 编译后的js文件统一储存的文件夹
"outFile":"./dist/app.js",
// 编译后的所有js代码,统一合并后放在1个js文件里面;但是模块化只能用amd或者system;
// 一般用的少,都是打包工具帮我们进行打包
"allowJS":false,// 是否对js文件进行编译,默认是false
"checkJS":false,// 是否检查js代码是否符合TS语法规范,默认是false
"removeComments":false, // 是否移除注释,默认是false
"noEmit":false, // 不生成编译后的文件,默认是false,生成
"noEmitOnError":true, // 当有错误时不生成编译后的文件,默认是false,生成
"alwaysStrict":false, // 编译后的js文件是否开启严格模式,默认false
"noImplicitAny":true, // 变量不默认是any,默认false,是any
"noImplicitThis":true, // 不允许类型不明确的this,默认false,是any
"strictNullChecks":false, // 严格检查空值,检测有可能出现的空值
}
}
include 指定哪些要编译
哪些文件是需要编译解析的
"include":[
"./src/**/*.ts",
"./src/**/*.tsx",
"./src/**/*.vue"
]
exclude 指定哪些不编译
比如你通过import 引用 axios 这个库,默认是给你解析的,axios默认就在node_modules文件夹内,但没必要完全解析。
因此可以把node_modules排除不解析,只解析引用的部分
"exclude": ["node_modules"]