"compilerOptions": {
"incremental": true, // TS編譯器在第一次編譯之后會(huì)生成一個(gè)存儲(chǔ)編譯信息的文件,第二次編譯會(huì)在第一次的基礎(chǔ)上進(jìn)行增量編譯,可以提高編譯的速度
"tsBuildInfoFile": "./buildFile", // 增量編譯文件的存儲(chǔ)位置
"diagnostics": true, // 打印診斷信息
"target": "ES5", // 目標(biāo)語(yǔ)言的版本
"module": "CommonJS", // 生成代碼的模板標(biāo)準(zhǔn)
"outFile": "./app.js", // 將多個(gè)相互依賴的文件生成一個(gè)文件,可以用在AMD模塊中,即開啟時(shí)應(yīng)設(shè)置"module": "AMD",
"lib": ["DOM", "ES2015", "ScriptHost", "ES2019.Array"], // TS需要引用的庫(kù),即聲明文件,es5 默認(rèn)引用dom、es5、scripthost,如需要使用es的高級(jí)版本特性,通常都需要配置,如es8的數(shù)組新特性需要引入"ES2019.Array",
"allowJS": true, // 允許編譯器編譯JS,JSX文件
"checkJs": true, // 允許在JS文件中報(bào)錯(cuò),通常與allowJS一起使用
"outDir": "./dist", // 指定輸出目錄
"rootDir": "./", // 指定輸出文件目錄(用于輸出),用于控制輸出目錄結(jié)構(gòu)
"declaration": true, // 生成聲明文件,開啟后會(huì)自動(dòng)生成聲明文件
"declarationDir": "./file", // 指定生成聲明文件存放目錄
"emitDeclarationOnly": true, // 只生成聲明文件,而不會(huì)生成js文件
"sourceMap": true, // 生成目標(biāo)文件的sourceMap文件
"inlineSourceMap": true, // 生成目標(biāo)文件的inline SourceMap,inline SourceMap會(huì)包含在生成的js文件中
"declarationMap": true, // 為聲明文件生成sourceMap
"typeRoots": [], // 聲明文件目錄,默認(rèn)時(shí)node_modules/@types
"types": [], // 加載的聲明文件包
"removeComments":true, // 刪除注釋
"noEmit": true, // 不輸出文件,即編譯后不會(huì)生成任何js文件
"noEmitOnError": true, // 發(fā)送錯(cuò)誤時(shí)不輸出任何文件
"noEmitHelpers": true, // 不生成helper函數(shù),減小體積,需要額外安裝,常配合importHelpers一起使用
"importHelpers": true, // 通過(guò)tslib引入helper函數(shù),文件必須是模塊
"downlevelIteration": true, // 降級(jí)遍歷器實(shí)現(xiàn),如果目標(biāo)源是es3/5,那么遍歷器會(huì)有降級(jí)的實(shí)現(xiàn)
"strict": true, // 開啟所有嚴(yán)格的類型檢查
"jsx": "preserve", // 指定 jsx 格式
"alwaysStrict": true, // 在代碼中注入'use strict'
"noImplicitAny": true, // 不允許隱式的any類型
"strictNullChecks": true, // 不允許把null、undefined賦值給其他類型的變量
"strictFunctionTypes": true, // 不允許函數(shù)參數(shù)雙向協(xié)變
"strictPropertyInitialization": true, // 類的實(shí)例屬性必須初始化
"strictBindCallApply": true, // 嚴(yán)格的bind/call/apply檢查
"noImplicitThis": true, // 不允許this有隱式的any類型
"noUnusedLocals": true, // 檢查只聲明、未使用的局部變量(只提示不報(bào)錯(cuò))
"noUnusedParameters": true, // 檢查未使用的函數(shù)參數(shù)(只提示不報(bào)錯(cuò))
"noFallthroughCasesInSwitch": true, // 防止switch語(yǔ)句貫穿(即如果沒(méi)有break語(yǔ)句后面不會(huì)執(zhí)行)
"noImplicitReturns": true, //每個(gè)分支都會(huì)有返回值
"esModuleInterop": true, // 允許export=導(dǎo)出,由import from 導(dǎo)入
"allowUmdGlobalAccess": true, // 允許在模塊中全局變量的方式訪問(wèn)umd模塊
"moduleResolution": "node", // 模塊解析策略,ts默認(rèn)用node的解析策略,即相對(duì)的方式導(dǎo)入
"baseUrl": "./", // 解析非相對(duì)模塊的基地址,默認(rèn)是當(dāng)前目錄
"paths": { // 路徑映射,相對(duì)于baseUrl
// 如使用jq時(shí)不想使用默認(rèn)版本,而需要手動(dòng)指定版本,可進(jìn)行如下配置
"jquery": ["node_modules/jquery/dist/jquery.min.js"]
},
"rootDirs": ["src","out"], // 將多個(gè)目錄放在一個(gè)虛擬目錄下,用于運(yùn)行時(shí),即編譯后引入文件的位置可能發(fā)生變化,這也設(shè)置可以虛擬src和out在同一個(gè)目錄下,不用再去改變路徑也不會(huì)報(bào)錯(cuò)
"listEmittedFiles": true, // 打印輸出文件
"listFiles": true// 打印編譯的文件(包括引用的聲明文件)
}
tsconfig.json文件是 TypeScript 編譯器的配置文件,TypeScript 編譯器可以根據(jù)它的規(guī)則來(lái)對(duì)代碼進(jìn)行編譯。
根選項(xiàng)
include:指定被編譯文件所在的目錄。
exclude:指定不需要被編譯的目錄。
extends:指定要繼承的配置文件。
files:指定被編譯的文件。
references:項(xiàng)目引用,是 TS 3.0 中的一項(xiàng)新功能,它允許將 TS 程序組織成更小的部分。
使用小技巧:在填寫路徑時(shí) ** 表示任意目錄, * 表示任意文件。
compilerOptions
定義項(xiàng)目的運(yùn)行時(shí)期望、JavaScript 的發(fā)出方式和位置以及與現(xiàn)有 JavaScript 代碼的集成級(jí)別。
項(xiàng)目選項(xiàng)
incremental:是否啟用增量編譯,指再次編譯時(shí)只編譯增加的內(nèi)容,默認(rèn):false。
target:指定ts編譯成ES的版本。
module:指定編譯后代碼使用的模塊化規(guī)范。
lib:指定項(xiàng)目運(yùn)行時(shí)使用的庫(kù)。
outDir:指定編譯后文件所在目錄。
outFile:將代碼編譯合并成一個(gè)文件,默認(rèn)將所有全局作用域中的代碼合并成一個(gè)文件。
rootDir:指定輸入文件的根目錄,默認(rèn)情況下當(dāng)前的項(xiàng)目目錄為根目錄。
allowJs:是否對(duì)js文件進(jìn)行編譯,默認(rèn):false。
checkJs:是否檢查js代碼是否符合語(yǔ)法規(guī)范,當(dāng)使用checkJs,必須使用allowJs,默認(rèn):false。
removeComments:是否移除注釋,默認(rèn):false
noEmit:不生成編譯后的文件,默認(rèn):false。
jsx:指定JSX代碼生成用于的開發(fā)環(huán)境。
plugins:在編輯器中運(yùn)行的語(yǔ)言服務(wù)插件列表。
declaration:是否生成相應(yīng)的 .d.ts 聲明文件,默認(rèn):false。
declarationMap:是否為每個(gè)對(duì)應(yīng)的 .d.ts 文件生成一個(gè) Map 文件,使用該功能時(shí),需要declaration或composite配合一起使用,默認(rèn):false。
sourceMap:是否生成相應(yīng)的Map映射的文件,默認(rèn):false。
composite:是否開啟項(xiàng)目編譯,開啟該功能,將會(huì)生成被編譯文件所在的目錄,同時(shí)開啟declaration、declarationMap和incremental,默認(rèn):false。
tsBuildInfoFile:指定增量編譯信息文件的位置,使用該功能時(shí),必須開啟incremental選項(xiàng)。
importHelpers:是否將輔助函數(shù)從 tslib 模塊導(dǎo)入,默認(rèn):false。
downlevelIteration:是否用于轉(zhuǎn)換為舊版本的 JS 提供可迭代對(duì)象的全面支持,默認(rèn):false。
isolatedModules:是否將每個(gè)文件轉(zhuǎn)換為單獨(dú)的模塊,默認(rèn):false。
嚴(yán)格檢查
strict:是否啟動(dòng)所有嚴(yán)格檢查的總開關(guān),默認(rèn):false,啟動(dòng)后將開啟所有的嚴(yán)格檢查選項(xiàng)。
alwaysStrict:是否以嚴(yán)格模式解析,并為每個(gè)源文件發(fā)出"use strict",默認(rèn):false。
noImplicitAny:是否禁止隱式的any類型,默認(rèn):false。
noImplicitThis:是否禁止不明確類型的this,默認(rèn):false。
strictNullChecks:是否啟用嚴(yán)格的空檢查,默認(rèn):false。
strictBindCallApply:是否在函數(shù)上啟用嚴(yán)格的’bind’, 'call’和’apply’方法,默認(rèn):false。
strictFunctionTypes:是否啟用對(duì)函數(shù)類型的嚴(yán)格檢查,默認(rèn):false。
strictPropertyInitialization:是否啟用嚴(yán)格檢查類的屬性初始化,默認(rèn):false。
模塊解析選項(xiàng)
moduleResolution:指定模塊解析策略,node或classic
baseUrl:用于解析非絕對(duì)模塊名的基本目錄,相對(duì)模塊不受影響。
paths:用于設(shè)置模塊名稱基于baseUrl的路徑映射關(guān)系。
rootDirs:將多個(gè)目錄放在一個(gè)虛擬目錄下,運(yùn)行編譯后文件引入的位置發(fā)生改變,也不會(huì)報(bào)錯(cuò)。
typeRoots:指定聲明文件或文件夾的路徑列表
types:用來(lái)指定需要包含的模塊,并將其包含在全局范圍內(nèi)。
allowSyntheticDefaultImports:是否允許從沒(méi)有默認(rèn)導(dǎo)出的模塊中默認(rèn)導(dǎo)入,默認(rèn):false。
esModuleInterop:是否通過(guò)為所有導(dǎo)入模塊創(chuàng)建命名空間對(duì)象,允許CommonJS和ES模塊之間的互操作性,開啟改選項(xiàng)時(shí),也自動(dòng)開啟allowSyntheticDefaultImports選項(xiàng),默認(rèn):false。
preserveSymlinks:是否不解析符號(hào)鏈接的真實(shí)路徑,這是為了在 Node.js 中反映相同的標(biāo)志,默認(rèn):false。
allowUmdGlobalAccess:允許您從模塊文件內(nèi)部訪問(wèn)作為全局變量的 UMD 導(dǎo)出,如果不使用該選項(xiàng),從 UMD 模塊導(dǎo)出需要一個(gè)導(dǎo)入聲明,默認(rèn):false。
Map選項(xiàng)
sourceRoot:指定調(diào)試器應(yīng)定位 TypeScript 文件而不是相對(duì)源位置的位置。
mapRoot:指定調(diào)試器定位Map文件的位置,而不是生成的位置。
inlineSourceMap:是否將Map文件內(nèi)容嵌套到 JS 文件中,這會(huì)導(dǎo)致 JS 文件變大,但在某些情況下會(huì)很方便,默認(rèn):false。
inlineSources:是否將 .ts 文件的原始內(nèi)容作為嵌入字符串包含在 .map 文件中,默認(rèn):false。
附加檢查
noUnusedLocals:是否檢查未使用的局部變量,默認(rèn):false。
noUnusedParameters:是否檢查未使用的參數(shù),默認(rèn):false。
noImplicitReturns:檢查函數(shù)是否不含有隱式返回值,默認(rèn):false。
noImplicitOverride:是否檢查子類繼承自基類時(shí),其重載的函數(shù)命名與基類的函數(shù)不同步問(wèn)題,默認(rèn):false。
noFallthroughCasesInSwitch:檢查switch中是否含有case沒(méi)有使用break跳出,默認(rèn):false。
noUncheckedIndexedAccess:是否通過(guò)索引簽名來(lái)描述對(duì)象上有未知鍵但已知值的對(duì)象,默認(rèn):false。
noPropertyAccessFromIndexSignature:是否通過(guò)" . “(obj.key) 語(yǔ)法訪問(wèn)字段和"索引”( obj["key"]), 以及在類型中聲明屬性的方式之間的一致性,默認(rèn):false。
實(shí)驗(yàn)選項(xiàng)
experimentalDecorators:是否啟用對(duì)裝飾器的實(shí)驗(yàn)性支持,裝飾器是一種語(yǔ)言特性,還沒(méi)有完全被 JavaScript 規(guī)范批準(zhǔn),默認(rèn):false。
emitDecoratorMetadata:為裝飾器啟用對(duì)發(fā)出類型元數(shù)據(jù)的實(shí)驗(yàn)性支持,默認(rèn):false。
高級(jí)選項(xiàng)
allowUnreachableCode:是否允許無(wú)法訪問(wèn)的代碼(undefined / true / false),默認(rèn):undefined。
undefined:向編輯提供建議作為警告。
true:未使用的標(biāo)簽被忽略。
false:引發(fā)有關(guān)未使用標(biāo)簽的編譯器錯(cuò)誤。
allowUnusedLabels:是否允許未使用的標(biāo)簽(undefined / true / false),默認(rèn):undefined。
undefined:向編輯提供建議作為警告。
true:未使用的標(biāo)簽被忽略。
false:引發(fā)有關(guān)未使用標(biāo)簽的編譯器錯(cuò)誤。
assumeChangesOnlyAffectDirectDependencies是否避免重新檢查/重建所有真正可能受影響的文件,而只會(huì)重新檢查/重建已更改的文件以及直接導(dǎo)入它們的文件,默認(rèn):false。
charset:字符集(已棄用),默認(rèn):utf8
declarationDir:提供一種方法來(lái)配置發(fā)出聲明文件的根目錄。
diagnostics:用于輸出用于調(diào)試的診斷信息
disableReferencedProjectLoad:是否禁用所有可用項(xiàng)目加載到內(nèi)存中,默認(rèn):false。
disableSizeLimit:為了避免在處理非常大的 JS 項(xiàng)目時(shí)可能出現(xiàn)的內(nèi)存膨脹問(wèn)題,TS 將分配的內(nèi)存量有一個(gè)上限,默認(rèn):false。
disableSolutionSearching:在編輯器中搜索查找所有引用或跳轉(zhuǎn)到定義等功能時(shí),禁止包含復(fù)合項(xiàng)目,默認(rèn):false。
disableSourceOfProjectReferenceRedirect:是否禁用項(xiàng)目引用源重定向,默認(rèn):false。
emitBOM:控制TypeScript在寫輸出文件時(shí)是否發(fā)出字節(jié)順序標(biāo)記(BOM),默認(rèn):false。
emitDeclarationOnly:是否只發(fā)出.d.ts 文件,不發(fā)出.js 文件,使用該選項(xiàng)時(shí),需要配合 declaration 或 composite 一起使用,默認(rèn):false。
explainFiles:解釋文件,此選項(xiàng)用于調(diào)試文件如何成為編譯的一部分,默認(rèn):false。
extendedDiagnostics:是否查看 TS 在編譯時(shí)花費(fèi)的時(shí)間,默認(rèn):false。
forceConsistentCasingInFileNames:是否區(qū)分文件系統(tǒng)大小寫規(guī)則,默認(rèn):false。
generateCpuProfile:在編譯階段讓 TS 發(fā)出 CPU 配置文件,只能通過(guò)終端或 CLI 調(diào)用 --generateCpuProfile tsc-output.cpuprofile 。
importsNotUsedAsValues:此標(biāo)志控制如何 import 工作方式,有 3 個(gè)不同的選項(xiàng):remove、preserve 和 error 。
jsxFactory:當(dāng)使用經(jīng)典的JSX運(yùn)行時(shí)編譯JSX元素時(shí),更改.js文件中調(diào)用的函數(shù),默認(rèn):React.createElement 。
jsxFragmentFactory:指定 JSX 片段工廠函數(shù)在指定了 jsxFactory 編譯器選項(xiàng)的情況下針對(duì) react JSX 發(fā)出時(shí)使用。
jsxImportSource:當(dāng)在TS 4.1中使用 jsx 作為 react-jsx 或 react-jsxdev 時(shí),聲明用于導(dǎo)入jsx和jsxs工廠函數(shù)的模塊說(shuō)明符。
keyofStringsOnly:當(dāng)應(yīng)用具有字符串索引簽名的類型時(shí),此標(biāo)志將類型操作符的鍵值更改為返回 string 而不是string | number,已棄用,默認(rèn):false。
listEmittedFiles:是否將編譯部分生成的文件的名稱打印到終端,默認(rèn):false。
listFiles:是否打印編譯文件部分的名稱,默認(rèn):false。
maxNodeModuleJsDepth:在node_modules下搜索并加載JavaScript文件的最大依賴深度,默認(rèn):0 。
newLine:指定發(fā)出文件時(shí)要使用的換行規(guī)則,CRLF (dos) 或 LF (unix)。
noEmitHelpers:是否使用全局作用域助手函數(shù)提供實(shí)現(xiàn),并完全關(guān)閉助手函數(shù)的發(fā)出,而不是使用 importhelper 來(lái)導(dǎo)入助手函數(shù),默認(rèn):false。
noEmitOnError:有錯(cuò)誤時(shí)不進(jìn)行編譯,默認(rèn):false。
noErrorTruncation:是否禁止截?cái)噱e(cuò)誤消息,已棄用,默認(rèn):false。
noImplicitUseStrict:是否禁止無(wú)隱式嚴(yán)格模式,默認(rèn):false。
noLib:是否禁止自動(dòng)包含任何庫(kù)文件,默認(rèn):false。
noResolve:是否禁用析后的文件添加到程序中;默認(rèn)情況下,TS 會(huì)檢查 import 和 reference 指令的初始文件集,并將這些解析后的文件添加到你的程序中,默認(rèn):false。
noStrictGenericChecks:是否禁用嚴(yán)格的泛型檢查,默認(rèn):false。
out:該選項(xiàng)以不可預(yù)測(cè)或一致的方式計(jì)算最終文件位置,已棄用,
preserveConstEnums:是否禁止刪除枚舉常量生成代碼中的聲明,默認(rèn):false。
reactNamespace:React命名空間,使用 jsxFactory 來(lái)代替。
resolveJsonModule:是否解析 JSON 模塊,默認(rèn):false。
skipDefaultLibCheck:是否跳過(guò)默認(rèn)庫(kù)聲明文件的類型檢查,默認(rèn):false。
skipLibCheck:是否跳過(guò)聲明文件的類型檢查,這可以在編譯期間以犧牲類型系統(tǒng)準(zhǔn)確性為代價(jià)來(lái)節(jié)省時(shí)間,默認(rèn):false。
stripInternal:是否禁止 JSDoc 注釋中帶有@internal注釋的代碼發(fā)出聲明,默認(rèn):false。
suppressExcessPropertyErrors:是否禁用報(bào)告過(guò)多的屬性錯(cuò)誤,默認(rèn):false。
suppressImplicitAnyIndexErrors:是否抑制隱式any索引的錯(cuò)誤,默認(rèn):false。
traceResolution:當(dāng)嘗試調(diào)試未包含模塊的原因時(shí)。啟用該選項(xiàng)讓 TypeScript 打印有關(guān)每個(gè)處理文件的解析過(guò)程的信息,默認(rèn):false。
useDefineForClassFields:此標(biāo)志用作遷移到即將推出的類字段標(biāo)準(zhǔn)版本的一部分,默認(rèn):false。
命令行
preserveWatchOutput:是否在監(jiān)視模式下保留過(guò)時(shí)的控制臺(tái)輸出,而不是每次發(fā)生更改時(shí)都清除屏幕,默認(rèn):false。
pretty:是否使用顏色對(duì)上下文錯(cuò)誤和消息進(jìn)行樣式化,默認(rèn):true。
watchOptions
配置 TypeScript 的 --watch工作方式。
監(jiān)視選項(xiàng)
watchFile:監(jiān)視單個(gè)文件的策略,默認(rèn):useFsEvents
fixedPollingInterval:以固定時(shí)間間隔每秒多次檢查每個(gè)文件的更改。
priorityPollingInterval:每秒多次檢查每個(gè)文件的更改,但使用啟發(fā)式方法檢查某些類型的文件的頻率低于其他文件。
dynamicPriorityPolling:使用動(dòng)態(tài)隊(duì)列,其中不經(jīng)常修改的文件將不那么頻繁地檢查。
useFsEvents:嘗試使用操作系統(tǒng)/文件系統(tǒng)的本機(jī)事件進(jìn)行文件更改。
useFsEventsOnParentDirectory:嘗試使用操作系統(tǒng)/文件系統(tǒng)的本機(jī)事件來(lái)監(jiān)聽文件父目錄的變化。
watchDirectory:在缺乏遞歸文件監(jiān)視功能的系統(tǒng)下如何監(jiān)視整個(gè)目錄樹的策略,默認(rèn):useFsEvents
fixedPollingInterval:以固定時(shí)間間隔每秒多次檢查每個(gè)目錄的變化。
dynamicPriorityPolling:使用動(dòng)態(tài)隊(duì)列,其中不經(jīng)常修改的目錄將不那么頻繁地檢查。
useFsEvents:嘗試使用操作系統(tǒng)/文件系統(tǒng)的本機(jī)事件進(jìn)行目錄更改。
fallbackPolling:使用文件系統(tǒng)事件時(shí),此選項(xiàng)指定當(dāng)系統(tǒng)用完本機(jī)文件觀察器和/或不支持本機(jī)文件觀察器時(shí)使用的輪詢策略,默認(rèn):dynamicPriorityPolling
fixedPollingInterval:以固定時(shí)間間隔每秒多次檢查每個(gè)文件的更改。
priorityPollingInterval:每秒多次檢查每個(gè)文件的更改,但使用啟發(fā)式方法檢查某些類型的文件的頻率低于其他文件。
dynamicPriorityPolling:使用動(dòng)態(tài)隊(duì)列,其中不經(jīng)常修改的文件將不那么頻繁地檢查。
synchronousWatchDirectory:禁用對(duì)目錄的延遲監(jiān)視。
synchronousWatchDirectory:在本機(jī)不支持遞歸觀看的平臺(tái)上同步調(diào)用回調(diào),并更新目錄觀察者的狀態(tài),默認(rèn):false。
excludeDirectories:使用排除目錄來(lái)大幅減少 --watch 期間被監(jiān)視的文件數(shù)量.
excludeFiles:使用excludeFiles從被監(jiān)視的文件中刪除一組特定的文件。
typeAcquisition
類型獲取僅對(duì) JavaScript 項(xiàng)目很重要。
- 類型獲取
enable:提供在 JavaScript 項(xiàng)目中禁用類型獲取的配置,默認(rèn):false。
include:使用 include 來(lái)指定應(yīng)從絕對(duì)類型中使用哪些類型。
exclude:提供用于禁用 JavaScript 項(xiàng)目中某個(gè)模塊的類型獲取的配置
disableFilenameBasedTypeAcquisition:是否禁用基于文件名的類型獲取,TypeScript 的類型獲取可以根據(jù)項(xiàng)目中的文件名推斷應(yīng)該添加哪些類型,默認(rèn):false。
————————————————
版權(quán)聲明:本文為CSDN博主「oBoLuoMi1」的原創(chuàng)文章,遵循CC 4.0 BY-SA版權(quán)協(xié)議,轉(zhuǎn)載請(qǐng)附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/oBoLuoMi1/article/details/121697267