文件相关选项的配置
// tsconfig.base
{
// 需要编译的文件
"files": [
"src/a.ts"
],
/**
* 编译器需要编译的文件或者目录
* 支持通配符
* src/* src下一级目录文件
* src下二级目录文件
*/
"include": [
"src"
],
/**
* 编译器需要排除的文件或者文件夹
* ts默认会排除node-modules下的所有文件,及所有的声明文件
*/
"exclude": [
"src/lib"
]
}
// tsconfig
{
"extends": "./tsconfig.base",
"exclude": [],
// 保存时,编译器自动编译,但是vscode暂不支持此功能
"compileOnSave": true
}
编译相关选项的配置
{
"extends": "./tsconfig.base",
"exclude": [],
// 保存时,编译器自动编译
"compileOnSave": true,
"compilerOptions": {
// ts在第一次编译后,生成一个存储编译信息的文件,二次编译时,会根据这个文件做增量编译,这样可以提高编译速度
// "incremental": true, // 增量编译
// "tsBuildInfoFile": "./buildFile", // 增量编译文件的存储位置
"diagnostics": true, // 打印诊断信息
// "target": "es5", // 目标语言的版本
// "module": "amd", // 生成代码的模块标准
// "outFile": "./app.js", // 将多个相互依赖的文件生成一个文件,可以用在 AMD 模块中
// "lib": ["dom", "es5", "scripthost", "es2019.array"], // TS 需要引用的库,即声明文件,es5 默认 "dom", "es5" , "scripthost"
// "allowJs": true, // 允许编译 JS 文件(js、jsx)
// "checkJs": true, // 允许在 JS 文件中报错,通常与 allowJS 一起使用
// "outDir": "./out", // 指定输出目录
// "rootDir": "./src", // 指定输入文件目录(用于输出)
// "declaration": true, // 生成声明文件
// "declarationDir": "./d", // 声明文件的路径
// "emitDeclarationOnly": true, // 只生成声明文件
// "sourceMap": true, // 生成目标文件的 sourceMap
// "inlineSourceMap": true, // 生成目标文件的 inline sourceMap
// "declarationMap": true, // 生成声明文件的 sourceMap
// "typeRoots": [], // 声明文件目录,默认 node_modules/@types
// "types": [], // 声明文件包
// "removeComments": true, // 删除注释
// "noEmit": true, // 不输出文件
// "noEmitOnError": true, // 发生错误时不输出文件
// "noEmitHelpers": true, // 不生成 helper 函数,需额外安装 ts-helpers
// "importHelpers": true, // 通过 tslib 引入 helper 函数,文件必须是模块
// "downlevelIteration": true, // 降级遍历器的实现 (es3/5)
// "strict": true, // 开启所有严格的类型检查
// "alwaysStrict": false, // 在代码中注入 "use strict"
// "noImplicitAny": true, // 不允许隐式的 any 类型
// "strictNullChecks": true, // 不允许把 null、undefined 赋值给其他类型变量
// "strictFunctionTypes": false, // 不允许函数参数双向协变
// "strictBindCallApply": true, // 严格的 bind/call/apply 检查
// "strictPropertyInitialization": true, // 类的实例属性必须初始化
// "noImplicitThis": false, // 不允许 this 有隐式的 any 类型
// "noUnusedLocals": true, // 检查只声明,未使用的局部变量
// "noUnusedParameters": true, // 检查未使用的函数参数
// "noFallthroughCasesInSwitch": true, // 防止 switch 语句贯穿
// "noImplicitReturns": true, // 每个分支都要有返回值
// "esModuleInterop": true, // 允许 export = 导出,由import from 导入
// "allowUmdGlobalAccess": true, // 允许在模块中访问 UMD 全局变量
// "moduleResolution": "node", // 模块解析策略
// "baseUrl": "./", // 解析非相对模块的基地址
// "paths": {}, // 路径映射,相对于 baseUrl
// "rootDirs": [], // 将多个目录放在一个虚拟目录下,用于运行时
// "listEmittedFiles": true, // 打印输出的文件
// "listFiles": true, // 打印编译的文件(包括引用的声明文件)
}
}
ts模块解析策略
node解析策略
相对方式导入,会检查以下文件,如果都没有找到,会在moduleB目录下接着找,查找package.json 有没有types属性,如果没有则会查找index
非相对方式导入,会查找当前目录下的node_modules,依次解析,当前目录没有,就会向上查找,直至查到node_modules
classc解析策略
classc解析策略用于AMD | System | ES2015模块
相对导入,会依次解析下面的文件,
非相对方式导入,会从node_modules目录下查找,如果本级目录没有,就会向上查找
TS默认使用node的解析策略
工程引用配置
基础配置
{
"compilerOptions": {
"target": "es5",
"module": "commonjs",
"strict": true,
// 工程可以被引用,可以进行增量编译
"composite": true,
// 生成声明文件,工程引用必须的
"declaration": true
}
}
子工程配置
<!--common-->
{
"extends": "../../tsconfig.json",
"compilerOptions": {
"outDir": "../../dist/common"
}
}
<!--client-->
{
"extends": "../../tsconfig.json",
"compilerOptions": {
"outDir": "../../dist/client"
},
"references": [
{ "path": "../common" }
]
}
<!--server-->
{
"extends": "../../tsconfig.json",
"compilerOptions": {
"outDir": "../../dist/server"
},
"references": [
{ "path": "../common" }
]
}
<!--test-->
{
"extends": "../tsconfig.json",
"references": [
{ "path": "../src/client" },
{ "path": "../src/server" }
]
}