tsconfig.json是TypeScript项目的配置文件,它用于指定编译TypeScript代码时的选项和设置。
这个文件通常位于项目的根目录下。以下是关于tsconfig.json的一些重要信息:
1. 基本结构
tsconfig.json是一个JSON格式的文件,主要包含一个名为"compilerOptions"的对象,以及其他可选的顶级属性。
2. 主要属性
a. compilerOptions:这是最重要的属性,用于设置TypeScript编译器的选项。
b. include:指定应该被编译的文件或文件夹。
c. exclude:指定不应被编译的文件或文件夹。
d. extends:允许从另一个配置文件继承设置。
3. compilerOptions选项
compilerOptions编译器选项:
项目相关(Projects):
"incremental": true- 启用增量编译,可以加快编译速度。"composite": true- 启用项目引用的约束条件。"tsBuildInfoFile": "./tsbuildinfo.txt"- 指定.tsbuildinfo增量编译文件的路径。"disableSourceOfProjectReferenceRedirect": true- 禁用优先使用源文件而非声明文件。"disableSolutionSearching": true- 在编辑时将项目排除在多项目引用检查之外。"disableReferencedProjectLoad": true- 减少 TypeScript 自动加载的项目数量。
语言和环境(Language and Environment):
"target": "es5"- 设置生成的 JavaScript 版本(例如:es3,es5,es6/es2015,es2016,es2017,es2018,es2019,es2020,esnext)。"lib": []- 指定要包含的库文件数组。"jsx": "preserve"- 指定 JSX 代码的生成方式(preserve,react,react-native)。"experimentalDecorators": true- 启用实验性的 ES 装饰器支持。"emitDecoratorMetadata": true- 为装饰器生成元数据。"jsxFactory": "React.createElement"- 指定 JSX 工厂函数。"jsxFragmentFactory": "React.Fragment"- 指定 JSX 片段引用。"jsxImportSource": "react"- 指定 JSX 导入源。"reactNamespace": "React"- 指定createElement调用的对象。"noLib": true- 禁止包含任何库文件。"useDefineForClassFields": true- 使用 ECMAScript 标准兼容的类字段。"moduleDetection": "auto"- 控制检测模块格式 JS 文件的方法。
模块(Modules):
"module": "commonjs"- 指定生成的模块代码(none,commonjs,amd,system,umd,es6/es2015,es2020,nodenext)。"rootDir": "./src"- 指定源文件的根目录。"moduleResolution": "node"- 指定模块解析策略(node,classic)。"baseUrl": "./"- 解析非相对模块名的基准目录。"paths": {}- 设置模块名到基于baseUrl的路径映射。"rootDirs": []- 将多个目录视为一个目录。"typeRoots": []- 指定多个作为@types的文件夹。"types": []- 指定要包含的类型声明文件数组。"allowUmdGlobalAccess": false- 允许从模块访问 UMD 全局变量。"moduleSuffixes": []- 解析模块时要搜索的文件名后缀列表。"resolveJsonModule": false- 允许导入.json文件。
JavaScript 支持(JavaScript Support):
"allowJs": false- 允许编译 JavaScript 文件。"checkJs": false- 报告 JavaScript 文件中的错误。"maxNodeModuleJsDepth": 0- 检查来自node_modules的 JavaScript 文件的最大深度。
发布(Emit):
"declaration": false- 生成相应的.d.ts文件。"declarationMap": false- 为.d.ts文件生成源映射。"emitDeclarationOnly": false- 只输出声明文件,不输出 JS 文件。"sourceMap": false- 生成源映射文件。"outFile": null- 将输出文件合并为一个文件。"outDir": null- 指定输出文件夹。"removeComments": false- 删除注释。"noEmit": false- 不生成输出文件。"importHelpers": false- 从tslib导入辅助函数。"downlevelIteration": false- 降级迭代器的实现。"sourceRoot": null- 指定调试器应该找到 TypeScript 文件的位置。"mapRoot": null- 指定调试器应该找到映射文件的位置。"inlineSources": false- 将代码与 sourcemaps 生成到一个文件中。"emitBOM": false- 在输出文件的开头加入 BOM 头。"newLine": "lf"- 设置输出文件的换行符(crlf,lf,os)。"stripInternal": false- 不对具有@internal注释的代码生成声明。
互操作约束(Interop Constraints):
"isolatedModules": false- 将每个文件作为单独的模块。"allowSyntheticDefaultImports": false- 允许从没有默认导出的模块中默认导入。"esModuleInterop": false- 启用 CommonJS 和 ES 模块之间的互操作性。"preserveSymlinks": false- 不把符号链接解析为其真实路径。"forceConsistentCasingInFileNames": false- 禁止对同一个文件的不一致引用。
类型检查(Type Checking):
"strict": false- 启用所有严格类型检查选项。"noImplicitAny": false- 在表达式和声明上有隐含的any类型时报错。"strictNullChecks": false- 严格的空值检查。"strictFunctionTypes": false- 严格检查函数类型。"strictBindCallApply": false- 严格检查bind、call和apply方法的参数。"strictPropertyInitialization": false- 严格检查类属性初始化。"noImplicitThis": false- 当this表达式值为any类型的时候,生成一个错误。"alwaysStrict": false- 以严格模式解析并为每个源文件生成"use strict"语句。"noUnusedLocals": false- 有未使用的变量时,抛出错误。"noUnusedParameters": false- 有未使用的参数时,抛出错误。"noImplicitReturns": false- 并不是所有函数里的代码都有返回值时,抛出错误。"noFallthroughCasesInSwitch": false- 报告switch语句的 fallthrough 错误。
完整性(Completeness):
"skipDefaultLibCheck": false- 跳过默认库的类型检查。"skipLibCheck": false- 跳过所有.d.ts文件的类型检查。
这些选项可以根据您的项目需求进行调整,以优化 TypeScript 项目的编译过程和代码质量。