Node.js tsconfig.json 逐条简介
2019-10-18 本文已影响0人
陈陌Chemo
为了更好的设置tsc编译所需的参数, 添加tsconfig.json文件
{
"compileOnSave": false, // 在保存文件的时候根据tsconfig.json重新生成文件
"compilerOptions": {
"outDir": "./dist/out-tsc", // 输出目录
"baseUrl": "src",
"sourceMap": true, // 把 ts 文件编译成 js 文件的时候,同时生成对应的 map 文件
"removeComments": true, // 编译 js 的时候,删除掉注释
"declaration": false,
"moduleResolution": "node", // 模块的解析
"emitDecoratorMetadata": true, // 给源码里的装饰器声明加上设计类型元数据。查看issue #2577了解更多信息
"experimentalDecorators": true, // 启用实验性的ES装饰器
"target": "es5", // 编译目标平台
"noImplicitAny": true, // 若编译器无法判断类型,将用 any 类型代替 ( false ) 或报错 ( true )
"typeRoots": [
"node_modules/@types"
],
"lib": [ // 添加需要的解析的语法,否则TS会检测出错
"es2016",
"dom"
]
}
}
选项 | 类型 | 默认值 | 描述 |
---|---|---|---|
allowJs | boolean | false | 允许编译 js |
allowSyntheticDefaultImports | boolean | module === "system" | 允许从未设置默认导出的模块中导入( 仅供类型检查 ) |
allowUnreachableCode | boolean | false | 忽略不执行的代码的错误 |
allowUnusedLabels | boolean | false | 忽略未使用标签的错误 |
alwaysStrict | boolean | false | 以严格模式解析并为每个源文件生成"use strict"语句 |
baseUrl | string | false | 解析非相对模块名的基准目录 |
charset | string | "utf8" | 输入文件的字符集 |
checkJs | boolean | false | 报告.js文件中的错误,与 allowJs 配合使用 |
declaration d | boolean | false | 生成相应的.d.ts文件 |
declarationDir | string | 生成声明文件的输出路径 | |
diagnostics | boolean | false | 显示诊断信息 |
disableSizeLimit | boolean | false | 禁用 js 工程体积大小的限制 |
emitBOM | boolean | false | 在输出文件的开头加入BOM头(UTF-8 Byte Order Mark) |
emitDecoratorMetadata | boolean | false | 给源码里的装饰器声明加上设计类型元数据 |
experimentalDecorators | boolean | false | 启用实验性的ES装饰器 |
forceConsistentCasingInFileNames | boolean | false | 禁止对同一个文件的不一致的引用 |
help h | 打印帮助信息 | ||
importHelpers | string | 从tslib导入辅助工具函数(比如__extends,__rest等) | |
inlineSourceMap | boolean | false | 生成单个sourcemaps文件,而不是将每sourcemaps生成不同的文件 |
inlineSources | boolean | false | 将代码与sourcemaps生成到一个文件中,要求同时设置了 inlineSourceMap 或 sourceMap 属性 |
init | 初始化TypeScript项目并创建一个tsconfig.json文件 | ||
isolatedModules | boolean | false | 将每个文件作为单独的模块(与“ts.transpileModule”类似) |
jsx | string | "Preserve" | 在.tsx文件里支持JSX:"React"或"Preserve" |
jsxFactory | string | "React.createElement" | 指定生成目标为react JSX时,使用的JSX工厂函数,比如React.createElement或h |
lib | string[] | 编译过程中需要引入的库文件的列表(可能的值放在文章底部) | |
listEmittedFiles | boolean | false | 打印出编译后生成文件的名字 |
listFiles | boolean | false | 编译过程中打印文件名 |
locale | string | (platform specific) | 显示错误信息时使用的语言,比如:en-us |
mapRoot | string | 为调试器指定指定sourcemap文件的路径,而不是使用生成时的路径。当.map文件是在运行时指定的,并不同于js文件的地址时使用这个标记。指定的路径会嵌入到sourceMap里告诉调试器到哪里去找它们 | |
maxNodeModuleJsDepth | number | 0 | node_modules依赖的最大搜索深度并加载JavaScript文件。仅适用于 allowJs |
module m | string | target === "ES6" ? "ES6" : "commonjs" | 指定生成哪个模块系统代码:"None","CommonJS","AMD","System","UMD","ES6"或"ES2015" 只有 "AMD"和"System"能和 outFile 一起使用,"ES6"和"ES2015"可使用在目标输出为"ES5"或更低的情况下 |
moduleResolution | string | module === "AMD" / "System" / "ES6" ? "Classic" : "Node" | 决定如何处理模块。或者是"Node"对于Node.js/io.js,或者是"Classic"(默认) |
newLine | string | (platform specific) | 当生成文件时指定行结束符:"crlf"(windows)或"lf"(unix) |
noEmit | boolean | false | 不生成输出文件 |
noEmitHelpers | boolean | false | 不在输出文件中生成用户自定义的帮助函数代码,如__extends |
noEmitOnError | boolean | false | 报错时不生成输出文件 |
noFallthroughCasesInSwitch | boolean | false | 报告 switch 语句的 fallthrough 错误(即,不允许switch的case语句贯穿) |
noImplicitAny | boolean | false | 在表达式和声明上有隐含的any类型时报错 |
noImplicitReturns | boolean | false | 不是函数的所有返回路径都有返回值时报错 |
noImplicitThis | boolean | false | 当this表达式的值为any类型的时候,生成一个错误 |
noImplicitUseStrict | boolean | false | 模块输出中不包含"use strict"指令 |
noLib | boolean | false | 不包含默认的库文件(lib.d.ts) |
noResolve | boolean | false | 不把/// <reference>或模块导入的文件加到编译文件列表 |
noStrictGenericChecks | boolean | false | 禁用在函数类型里对泛型签名进行严格检查 |
noUnusedLocals | boolean | false | 若有未使用的局部变量则抛错 |
noUnusedParameters | boolean | false | 若有未使用的参数则抛错 |
out | string | 弃用。使用 outFile 代替 | |
outDir | string | 重定向输出目录 | |
outFile | string | 将输出文件合并为一个文件。合并的顺序是根据传入编译器的文件顺序和///<reference>和import的文件顺序决定的。查看输出文件顺序文件了解详情 | |
paths[2] | Object | 模块名到基于baseUrl的路径映射的列表 | |
preserveConstEnums | boolean | false | 保留const和enum声明 |
preserveSymlinks | boolean | false | 不把符号链接解析为其真实路径;将符号链接文件视为真正的文件 |
pretty[1] | boolean | false | 给错误和消息设置样式,使用颜色和上下文 |
project -p | string | 编译指定目录下的项目。这个目录应该包含一个tsconfig.json文件来管理编译 | |
reactNamespace | string | "React" | 当目标为生成"react" JSX时,指定createElement和__spread的调用对象 |
removeComments | boolean | false | 删除所有注释,除了以/!*开头的版权信息 |
rootDir | string | (common root directory is computed from the list of input files) | 仅用来控制输出的目录结构outDir |
rootDirs[2] | string[] | 根(root)文件夹列表,表示运行时组合工程结构的内容 | |
skipDefaultLibCheck | boolean | false | 忽略库的默认声明文件的类型检查 |
skipLibCheck | boolean | false | 忽略所有的声明文件(*.d.ts)的类型检查 |
sourceMap | boolean | false | 生成相应的.map文件 |
sourceRoot | string | 指定TypeScript源文件的路径,以便调试器定位。当TypeScript文件的位置是在运行时指定时使用此标记。路径信息会被加到 sourceMap 里 | |
strict | boolean | false | 启用所有严格类型检查选项。启用 strict 相当于启用 noImplicitAny , noImplicitThis , alwaysStrict 和strictNullChecks |
strictNullChecks | boolean | false | 在严格的null检查模式下,null和undefined值不包含在任何类型里,只允许用它们自己和any来赋值(有个例外,undefined可以赋值到void) |
stripInternal[1] | boolean | false | 不对具有/** @internal */ JSDoc注解的代码生成代码 |
suppressExcessPropertyErrors[1] | boolean | false | 阻止对对象字面量的额外属性检查 |
suppressImplicitAnyIndexErrors | boolean | false | 阻止 noImplicitAny 对缺少索引签名的索引对象报错。查看issue #1232了解详情 |
target t | string | "ES3" | 指定ECMAScript目标版本"ES3"(默认),"ES5","ES6"/"ES2015","ES2016","ES2017"或"ESNext"。注意:"ESNext"最新的生成目标列表为ES proposed features |
traceResolution | boolean | false | 生成模块解析日志信息 |
types | string[] | 要包含的类型声明文件名列表。查看@types,typeRoots 和 types章节了解详细信息 | |
typeRoots | string[] | 要包含的类型声明文件路径列表。查看@types,typeRoots 和 types章节了解详细信息 | |
version v | 打印编译器版本号 | ||
watch w | 在监视模式下运行编译器。会监视输出文件,在它们改变时重新编译 | ||
strictPropertyInitialization | boolean | false | 确保每个实例的属性都会初始值,可以在构造函数里或者属性定义时赋值 |
downlevelIteration | boolean | false | 当 target 为 ES5 或 ES3 时,提供对 for..of,解构等的支持 |
lib 关键词的可能的值:
ES5
ES6
ES2015
ES7
ES2016
ES2017
DOM
DOM.Iterable
WebWorker
ScriptHost
ES2015.Core
ES2015.Collection
ES2015.Generator
ES2015.Iterable
ES2015.Promise
ES2015.Proxy
ES2015.Reflect
ES2015.Symbol
ES2015.Symbol.WellKnown
ES2016.Array.Include
ES2017.object
ES2017.SharedMemory
注意:如果lib没有指定一个默认注入的库。默认注入的库为:
针对于target ES5:DOM,ES5,ScriptHost
针对于target ES6:DOM,ES6,DOM.Iterable,ScriptHost