tsconfig.json

189 阅读4分钟

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 - 严格检查 bindcallapply 方法的参数。
  • "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 项目的编译过程和代码质量。