tsconfig.json详细配置

248 阅读10分钟

tsconfig.json详细配置

{
  "files": [],                             /* 指定被编译的文件,路径必须是指定文件,而不是某个文件夹,可以使用相对和绝对路径,而且不能使用* ? **/ 等通配符 */
  "include": [],                           /* 指定被编译文件所在的目录或文件,可以使用相对和绝对路径,而且可以使用通配符,比如"./src"即表示要编译src文件夹下的所有文件以及子文件夹的文件 */
  "exclude": [],                           /* 指定不需要被编译的目录或文件,可以是相对路径或绝对路径,可以使用通配符 */
  "extends": "",                           /* 指定要继承的配置文件,继承的配置会覆盖当前文件定义的配置。TS在3.2版本开始,支持继承一个来自Node.js包的tsconfig.json配置文件 */
  "references": [],                        /* 项目引用,是 TS 3.0 中的一项新功能,它允许将 TS 程序组织成更小的部分。使用小技巧:在填写路径时 ** 表示任意目录, * 表示任意文件。 */
  "compilerOptions": {
    /* 基本选项 */
    "target": "es5",                       /* 指定编译之后的版本目标,有效值: "ES3", "ES5", "ES6", "ES2015", "ES2016", "ES2017", "ES2018", "ES2019", "ES2020", "ES2021", "ES2022", "ES2023", "ESNext". */,
    "module": "commonjs",                  /* 指定编译后代码使用的模块化规范,有效值: "CommonJS", "AMD", "System", "UMD", "ES6", "ES2015", "ES2020", "ESNext", "None", "ES2022", "Node16", "NodeNext", "Preserve"。 */,
    "lib": ["es6", "dom"],                 /* 指定项目运行时使用的库 */,
    "allowJs": true,                       /* 是否对js文件进行编译,默认:false */
    "checkJs": true,                       /* 是否检查js代码是否符合语法规范,当使用checkJs,必须使用allowJs,默认:false */
    "jsx": "preserve",                     /* 指定jsx代码用于的开发环境,有效值: "preserve", "react", "react-jsx", "react-jsxdev", "react-native"。 */
    "declaration": true,                   /* 是否生成相应的 .d.ts 声明文件,默认:false */
    "declarationMap": true,                /* 是否为声明文件.d.ts生成map文件,需要declaration或composite配合一起使用,默认:false */
    "sourceMap": true,                     /* 编译时是否生成.map文件 */
    "composite": true,                     /* 是否编译构建引用项目,开启该功能,将会生成被编译文件所在的目录,同时开启declaration、declarationMap和incremental,默认:false*/
    "outFile": "./",                       /* 指定将输出文件合并为一个文件,值为一个文件路径名。默认将所有全局作用域中的代码合并成一个文件。注意,只有设置module的值为amd和system模块时才支持这个配置 */
    "outDir": "./",                        /* 指定编译后文件所在目录 */
    "rootDir": "./",                       /* 指定输入文件的根目录,默认情况下当前的项目目录为根目录 */
    "incremental": true,                   /* 是否启用增量编译,默认:false */
    "tsBuildInfoFile": "./",               /* 指定增量编译信息文件的位置,使用该功能时,必须开启incremental选项 */
    "removeComments": true,                /* 是否移除注释,默认:false */
    "noEmit": true,                        /* :不生成编译后的文件,默认:false,一般比较少用 */
    "importHelpers": true,                 /* 是否引入tslib里的辅助函数,默认为false */
    "downlevelIteration": true,            /* 是否用于转换为旧版本的 JS 提供可迭代对象的全面支持,默认:false */
    "isolatedModules": true,               /* 是否将每个文件转换为单独的模块,默认:false,不可以和declaration同时设定 */

    /* 严格检查选项 */
    "strict": true,                        /* 是否启动所有严格检查的总开关,默认:false,启动后将开启所有的严格检查选项 */,
    "noImplicitAny": true,                 /* 是否禁止隐式的any类型,默认:false */
    "strictNullChecks": true,              /* 是否启用严格的空检查,默认:false */
    "strictFunctionTypes": true,           /* 是否启用对函数类型的严格检查,默认:false */
    "strictBindCallApply": true,           /* 是否在函数上启用严格的’bind’, 'call’和’apply’方法,默认:false */
    "strictPropertyInitialization": true,  /* 是否启用严格检查类的属性初始化,如果要开启这项,需要同时开启strictNullChecks,默认为false */
   "noImplicitThis": true,                 /* 是否禁止不明确类型的this,默认:false */
    "alwaysStrict": true,                  /* 是否以严格模式解析,并为每个源文件发出"use strict",默认:false */

    /* 附加选项 */
    "noUnusedLocals": true,                /* 是否检查未使用的局部变量,默认:false */
    "noUnusedParameters": true,            /* 是否检查未使用的参数,默认:false */
    "noImplicitReturns": true,             /* 检查函数是否不含有隐式返回值,默认:false */
    "noImplicitOverride"true,            /* 是否检查子类继承自基类时,其重载的函数命名与基类的函数不同步问题,默认:false */
    "noFallthroughCasesInSwitch": true,    /* 检查switch中是否含有case没有使用break跳出,默认:false */
    "noUncheckedIndexedAccess": true,      /* 是否通过索引签名来描述对象上有未知键但已知值的对象,默认:false */
    "noPropertyAccessFromIndexSignature": true,/* 是否通过" . “(obj.key) 语法访问字段和"索引”( obj[“key”]), 以及在类型中声明属性的方式之间的一致性,默认:false */

    /* 模块解析选项 */
    "moduleResolution": "node",            /* 指定模块解析策略,node或classic */
    "baseUrl": "./",                       /* 用于解析非绝对模块名的基本目录,相对模块不受影响 */
    "paths": {},                           /* 用于设置模块名称到基于baseUrl的路径映射 */
    "rootDirs": [],                        /* 将多个目录放在一个虚拟目录下,运行编译后文件引入的位置发生改变,也不会报错 */
    "typeRoots": [],                       /* 指定声明文件或文件夹的路径列表,如果指定了此项,则只有在这里列出的声明文件才会被加载 */
    "types": [],                           /* 用来指定需要包含的模块,并将其包含在全局范围内,只有在这里列出的模块的声明文件才会被加载进 */
    "allowSyntheticDefaultImports": true,  /* 是否允许从没有默认导出的模块中默认导入,默认:false */
    "esModuleInterop": true,               /* 是否通过为所有导入模块创建命名空间对象,允许CommonJS和ES模块之间的互操作性,开启改选项时,也自动开启allowSyntheticDefaultImports选项,默认:false */,
    "preserveSymlinks": true,              /* 是否不解析符号链接的真实路径,这是为了在 Node.js 中反映相同的标志,默认:false */
    "allowUmdGlobalAccess": true,          /* 允许您从模块文件内部访问作为全局变量的 UMD 导出,如果不使用该选项,从 UMD 模块导出需要一个导入声明,默认:false */

    /* Map选项 */
    "sourceRoot": "",                      /* 指定调试器应该找到TypeScript文件而不是源文件位置,这个值会被写进.map文件里 */
    "mapRoot": "",                         /* 指定调试器找到映射文件而非生成文件的位置,指定map文件的根路径,该选项会影响.map文件中的sources属性 */
    "inlineSourceMap": true,               /* 指定是否将map文件的内容和js文件编译在同一个js文件中,如果设为true,则map的内容会以//# sourceMappingURL=然后拼接base64字符串的形式插入在js文件底部 */
    "inlineSources": true,                 /* 是否将 .ts 文件的原始内容作为嵌入字符串包含在 .map 文件中,默认:false */

    /* 实验选项 */
    "experimentalDecorators": true,        /* 是否启用对装饰器的实验性支持,装饰器是一种语言特性,还没有完全被 JavaScript 规范批准,默认:false */
    "emitDecoratorMetadata": true,         /* 为装饰器启用对发出类型元数据的实验性支持,默认:false */
    
    /* 高级选项 */
    "allowUnreachableCode": true,          /* 是否允许无法访问的代码(undefined / true / false),默认:undefined,undefined:向编辑提供建议作为警告,true:未使用的标签被忽略,false:引发有关未使用标签的编译器错误 */
    "allowUnusedLabels": true,             /* 是否允许未使用的标签(undefined / true / false),默认:undefined,默认:undefined,undefined:向编辑提供建议作为警告,true:未使用的标签被忽略,false:引发有关未使用标签的编译器错误 */
    "assumeChangesOnlyAffectDirectDependencies": true,/* 是否避免重新检查/重建所有真正可能受影响的文件,而只会重新检查/重建已更改的文件以及直接导入它们的文件,默认:false */
    "declarationDir": "./declaration",     /* 提供一种方法来配置发出声明文件的根目录 */
    "diagnostics": true,                   /* 用于输出用于调试的诊断信息 */
    "disableReferencedProjectLoad": true,  /* 是否禁用所有可用项目加载到内存中,默认:false */
    "disableSizeLimit": true,              /* 为了避免在处理非常大的 JS 项目时可能出现的内存膨胀问题,TS 将分配的内存量有一个上限,默认:false */
    "disableSolutionSearching": true,      /* 在编辑器中搜索查找所有引用或跳转到定义等功能时,禁止包含复合项目,默认:false */
    "disableSourceOfProjectReferenceRedirect": true,/* 是否禁用项目引用源重定向,默认:false */
    "emitBOM": true,                       /* 控制TypeScript在写输出文件时是否发出字节顺序标记(BOM),默认:false */
    "emitDeclarationOnly": true,           /* 是否只发出.d.ts 文件,不发出.js 文件,使用该选项时,需要配合 declaration 或 composite 一起使用,默认:false */
    "explainFiles": true,                  /* 解释文件,此选项用于调试文件如何成为编译的一部分,默认:false */
    "extendedDiagnostics": true,           /* 是否查看 TS 在编译时花费的时间,默认:false */
    "forceConsistentCasingInFileNames": true,/* 是否区分文件系统大小写规则,默认:false */
    "generateCpuProfile": "profile.cpuprofile",/* 这个配置允许编译器生成一个CPU profile,通常在“.cpuprofile”文件格式中,这有助于分析编译性能问题,默认:profile.cpuprofile */
    "importsNotUsedAsValues": "preserve",  /* 此标志控制如何 import 工作方式,有 3 个不同的选项:remove、preserve 和 error */
    "jsxFactory": "React.createElement",   /* **当使用jsx时,指定生成JSX元素时使用的工厂函数名称。例如,React应用通常使用React.createElement** */
    "jsxFragmentFactory": "",              /* 指定 JSX 片段工厂函数在指定了 jsxFactory 编译器选项的情况下针对 react JSX 发出时使用 */
    "jsxImportSource": "",                 /* 当在TS 4.1中使用 jsx 作为 react-jsx 或 react-jsxdev 时,声明用于导入jsx和jsxs工厂函数的模块说明符 */
    "listEmittedFiles": true,              /* 是否将编译部分生成的文件的名称打印到终端,默认:false */
    "listFiles": true,                     /* 是否打印编译文件部分的名称,默认:false */
    "maxNodeModuleJsDepth": 0,             /* 在node_modules下搜索并加载JavaScript文件的最大依赖深度,默认:0 */
    "newLine": "CRLF",                     /* 用于指定输出文件中的换行符类型。"CRLF"用于Windows,而"LF"用于Unix / Linux */
    "noEmitHelpers": true,                 /* 是否使用全局作用域助手函数提供实现,并完全关闭助手函数的发出,而不是使用 importhelper 来导入助手函数,默认:false */
    "noEmitOnError": true,                 /* 有错误时不进行编译,默认:false */
    "noErrorTruncation": true,             /* 是否禁止截断错误消息,已弃用,默认:false */
    "noImplicitUseStrict": true,           /* 是否禁止无隐式严格模式,默认:false */
    "noLib": true,                         /* 是否禁止自动包含任何库文件,默认:false */
    "noResolve": true,                     /* 是否禁用析后的文件添加到程序中;默认情况下,TS 会检查 import 和 reference 指令的初始文件集,并将这些解析后的文件添加到你的程序中,默认:false */
    "noStrictGenericChecks": true,         /* 是否禁用严格的泛型检查,默认:false */
    "preserveConstEnums": true,            /* 是否禁止删除枚举常量生成代码中的声明,默认:false */
    "reactNamespace": "",                  /* React命名空间,使用 jsxFactory 来代替 */
    "resolveJsonModule": true,             /* 是否解析 JSON 模块,默认:false */
    "skipDefaultLibCheck": true,           /* 是否跳过默认库(比如lib.d.ts)的类型检查,默认:false */
    "skipLibCheck": true,                  /* 与skipDefaultLibCheck类似,但这个选项会跳过所有声明文件(.d.ts files)的类型检查 */
    "stripInternal": true,                 /* 是否禁止 JSDoc 注释中带有@internal注释的代码发出声明,默认:false */
    "suppressExcessPropertyErrors": true,  /* 是否禁用报告过多的属性错误,默认:false */
    "suppressImplicitAnyIndexErrors": true,/* 是否抑制隐式any索引的错误,默认:false */
    "traceResolution": true,               /* 当尝试调试未包含模块的原因时。启用该选项让 TypeScript 打印有关每个处理文件的解析过程的信息,默认:false */
    "useDefineForClassFields": true,      /* 此标志用作迁移到即将推出的类字段标准版本的一部分,默认:false */
  }
}