tsconfig json 配置詳解

版本1

{
  "compilerOptions": {
    "allowUnreachableCode": true, // 不報告執(zhí)行不到的代碼錯誤。
    "allowUnusedLabels": false, // 不報告未使用的標簽錯誤
    "alwaysStrict": false, // 以嚴格模式解析并為每個源文件生成 "use strict"語句
    "baseUrl": ".", // 工作根目錄
    "experimentalDecorators": true, // 啟用實驗性的ES裝飾器
    "jsx": "react", // 在 .tsx文件里支持JSX
    "sourceMap": true, // 是否生成map文件
    "module": "commonjs", // 指定生成哪個模塊系統(tǒng)代碼
    "noImplicitAny": false, // 是否默認禁用 any
    "removeComments": true, // 是否移除注釋
    "types": [ //指定引入的類型聲明文件闪湾,默認是自動引入所有聲明文件,一旦指定該選項动分,則會禁用自動引入,改為只引入指定的類型聲明文件掏导,如果指定空數(shù)組[]則不引用任何文件
      "node", // 引入 node 的類型聲明
    ],
    "paths": { // 指定模塊的路徑忘衍,和baseUrl有關(guān)聯(lián),和webpack中resolve.alias配置一樣
      "src": [ //指定后可以在文件之直接 import * from 'src';
        "./src"
      ],
    },
    "target": "ESNext", // 編譯的目標是什么版本的
    "outDir": "./dist", // 輸出目錄
    "declaration": true, // 是否自動創(chuàng)建類型聲明文件
    "declarationDir": "./lib", // 類型聲明文件的輸出目錄
    "allowJs": true, // 允許編譯javascript文件吧黄。
    "lib": [ // 編譯過程中需要引入的庫文件的列表
      "es5",
      "es2015",
      "es2016",
      "es2017",
      "es2018",
      "dom"
    ]
  },
  // 指定一個匹配列表(屬于自動指定該路徑下的所有ts相關(guān)文件)
  "include": [
    "src/**/*"
  ],
  // 指定一個排除列表(include的反向操作)
  "exclude": [
    "demo.ts"
  ],
  // 指定哪些文件使用該配置(屬于手動一個個指定文件)
  "files": [
    "demo.ts"
  ]
}

版本2

{
 "compilerOptions": {
   /* Basic Options */
   "target": "es5" /* target用于指定編譯之后的版本目標: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017', 'ES2018', 'ES2019' or 'ESNEXT'. */,
   "module": "commonjs" /* 用來指定要使用的模塊標準: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', or 'ESNext'. */,
   "lib": ["es6", "dom"] /* lib用于指定要包含在編譯中的庫文件 */,
   "allowJs": true,                       /* allowJs設(shè)置的值為true或false,用來指定是否允許編譯js文件唆姐,默認是false拗慨,即不編譯js文件 */
   "checkJs": true,                       /* checkJs的值為true或false,用來指定是否檢查和報告js文件中的錯誤奉芦,默認是false */
   "jsx": "preserve",                     /* 指定jsx代碼用于的開發(fā)環(huán)境: 'preserve', 'react-native', or 'react'. */
   "declaration": true,                   /* declaration的值為true或false赵抢,用來指定是否在編譯的時候生成相應的".d.ts"聲明文件。如果設(shè)為true声功,編譯每個ts文件之后會生成一個js文件和一個聲明文件烦却。但是declaration和allowJs不能同時設(shè)為true */
   "declarationMap": true,                /* 值為true或false,指定是否為聲明文件.d.ts生成map文件 */
   "sourceMap": true,                     /* sourceMap的值為true或false先巴,用來指定編譯時是否生成.map文件 */
   "outFile": "./",                       /* outFile用于指定將輸出文件合并為一個文件其爵,它的值為一個文件路徑名冒冬。比如設(shè)置為"./dist/main.js",則輸出的文件為一個main.js文件摩渺。但是要注意窄驹,只有設(shè)置module的值為amd和system模塊時才支持這個配置 */
   "outDir": "./",                        /* outDir用來指定輸出文件夾,值為一個文件夾路徑字符串证逻,輸出的文件都將放置在這個文件夾 */
   "rootDir": "./",                       /* 用來指定編譯文件的根目錄,編譯器會在根目錄查找入口文件抗斤,如果編譯器發(fā)現(xiàn)以rootDir的值作為根目錄查找入口文件并不會把所有文件加載進去的話會報錯囚企,但是不會停止編譯 */
   "composite": true,                     /* 是否編譯構(gòu)建引用項目  */
   "incremental": true,                   /* 是否啟用增量編譯*/
   "tsBuildInfoFile": "./",               /* 指定文件用來存儲增量編譯信息 */
   "removeComments": true,                /* removeComments的值為true或false,用于指定是否將編譯后的文件中的注釋刪掉瑞眼,設(shè)為true的話即刪掉注釋龙宏,默認為false */
   "noEmit": true,                        /* 不生成編譯文件,這個一般比較少用 */
   "importHelpers": true,                 /* importHelpers的值為true或false伤疙,指定是否引入tslib里的輔助工具函數(shù)银酗,默認為false */
   "downlevelIteration": true,            /* 當target為'ES5' or 'ES3'時,為'for-of', spread, and destructuring'中的迭代器提供完全支持 */
   "isolatedModules": true,               /* isolatedModules的值為true或false徒像,指定是否將每個文件作為單獨的模塊黍特,默認為true,它不可以和declaration同時設(shè)定 */

   /* Strict Type-Checking Options */
   "strict": true /* strict的值為true或false锯蛀,用于指定是否啟動所有類型檢查灭衷,如果設(shè)為true則會同時開啟下面這幾個嚴格類型檢查,默認為false */,
   "noImplicitAny": true,                 /* noImplicitAny的值為true或false旁涤,如果我們沒有為一些值設(shè)置明確的類型翔曲,編譯器會默認認為這個值為any,如果noImplicitAny的值為true的話劈愚。則沒有明確的類型會報錯瞳遍。默認值為false */
   "strictNullChecks": true,              /* strictNullChecks為true時,null和undefined值不能賦給非這兩種類型的值菌羽,別的類型也不能賦給他們掠械,除了any類型。還有個例外就是undefined可以賦值給void類型 */
   "strictFunctionTypes": true,           /* strictFunctionTypes的值為true或false算凿,用于指定是否使用函數(shù)參數(shù)雙向協(xié)變檢查 */
   "strictBindCallApply": true,           /* 設(shè)為true后會對bind份蝴、call和apply綁定的方法的參數(shù)的檢測是嚴格檢測的 */
   "strictPropertyInitialization": true,  /* 設(shè)為true后會檢查類的非undefined屬性是否已經(jīng)在構(gòu)造函數(shù)里初始化,如果要開啟這項氓轰,需要同時開啟strictNullChecks婚夫,默認為false */
  "noImplicitThis": true,                /* 當this表達式的值為any類型的時候,生成一個錯誤 */
   "alwaysStrict": true,                  /* alwaysStrict的值為true或false署鸡,指定始終以嚴格模式檢查每個模塊案糙,并且在編譯之后的js文件中加入"use strict"字符串限嫌,用來告訴瀏覽器該js為嚴格模式 */

   /* Additional Checks */
   "noUnusedLocals": true,                /* 用于檢查是否有定義了但是沒有使用的變量,對于這一點的檢測时捌,使用eslint可以在你書寫代碼的時候做提示怒医,你可以配合使用。它的默認值為false */
   "noUnusedParameters": true,            /* 用于檢查是否有在函數(shù)體中沒有使用的參數(shù)奢讨,這個也可以配合eslint來做檢查稚叹,默認為false */
   "noImplicitReturns": true,             /* 用于檢查函數(shù)是否有返回值,設(shè)為true后拿诸,如果函數(shù)沒有返回值則會提示扒袖,默認為false */
   "noFallthroughCasesInSwitch": true,    /* 用于檢查switch中是否有case沒有使用break跳出switch,默認為false */

   /* Module Resolution Options */
   "moduleResolution": "node",            /* 用于選擇模塊解析策略亩码,有'node'和'classic'兩種類型' */
   "baseUrl": "./",                       /* baseUrl用于設(shè)置解析非相對模塊名稱的基本目錄季率,相對模塊不會受baseUrl的影響 */
   "paths": {},                           /* 用于設(shè)置模塊名稱到基于baseUrl的路徑映射 */
   "rootDirs": [],                        /* rootDirs可以指定一個路徑列表,在構(gòu)建時編譯器會將這個路徑列表中的路徑的內(nèi)容都放到一個文件夾中 */
   "typeRoots": [],                       /* typeRoots用來指定聲明文件或文件夾的路徑列表描沟,如果指定了此項飒泻,則只有在這里列出的聲明文件才會被加載 */
   "types": [],                           /* types用來指定需要包含的模塊,只有在這里列出的模塊的聲明文件才會被加載進來 */
   "allowSyntheticDefaultImports": true,  /* 用來指定允許從沒有默認導出的模塊中默認導入 */
   "esModuleInterop": true /* 通過為導入內(nèi)容創(chuàng)建命名空間吏廉,實現(xiàn)CommonJS和ES模塊之間的互操作性 */,
   "preserveSymlinks": true,              /* 不把符號鏈接解析為其真實路徑泞遗,具體可以了解下webpack和nodejs的symlink相關(guān)知識 */

   /* Source Map Options */
   "sourceRoot": "",                      /* sourceRoot用于指定調(diào)試器應該找到TypeScript文件而不是源文件位置,這個值會被寫進.map文件里 */
   "mapRoot": "",                         /* mapRoot用于指定調(diào)試器找到映射文件而非生成文件的位置迟蜜,指定map文件的根路徑刹孔,該選項會影響.map文件中的sources屬性 */
   "inlineSourceMap": true,               /* 指定是否將map文件的內(nèi)容和js文件編譯在同一個js文件中,如果設(shè)為true娜睛,則map的內(nèi)容會以//# sourceMappingURL=然后拼接base64字符串的形式插入在js文件底部 */
   "inlineSources": true,                 /* 用于指定是否進一步將.ts文件的內(nèi)容也包含到輸入文件中 */

   /* Experimental Options */
   "experimentalDecorators": true /* 用于指定是否啟用實驗性的裝飾器特性 */
   "emitDecoratorMetadata": true,         /* 用于指定是否為裝飾器提供元數(shù)據(jù)支持髓霞,關(guān)于元數(shù)據(jù),也是ES6的新標準畦戒,可以通過Reflect提供的靜態(tài)方法獲取元數(shù)據(jù)方库,如果需要使用Reflect的一些方法,需要引入ES2015.Reflect這個庫 */
 }
 "files": [], // files可以配置一個數(shù)組列表障斋,里面包含指定文件的相對或絕對路徑纵潦,編譯器在編譯的時候只會編譯包含在files中列出的文件,如果不指定垃环,則取決于有沒有設(shè)置include選項邀层,如果沒有include選項,則默認會編譯根目錄以及所有子目錄中的文件遂庄。這里列出的路徑必須是指定文件寥院,而不是某個文件夾,而且不能使用* ? **/ 等通配符
 "include": [],  // include也可以指定要編譯的路徑列表涛目,但是和files的區(qū)別在于秸谢,這里的路徑可以是文件夾凛澎,也可以是文件,可以使用相對和絕對路徑估蹄,而且可以使用通配符塑煎,比如"./src"即表示要編譯src文件夾下的所有文件以及子文件夾的文件
 "exclude": [],  // exclude表示要排除的、不編譯的文件臭蚁,它也可以指定一個列表最铁,規(guī)則和include一樣,可以是文件或文件夾垮兑,可以是相對路徑或絕對路徑炭晒,可以使用通配符
 "extends": "",   // extends可以通過指定一個其他的tsconfig.json文件路徑,來繼承這個配置文件里的配置甥角,繼承來的文件的配置會覆蓋當前文件定義的配置。TS在3.2版本開始识樱,支持繼承一個來自Node.js包的tsconfig.json配置文件
 "compileOnSave": true,  // compileOnSave的值是true或false嗤无,如果設(shè)為true,在我們編輯了項目中的文件保存的時候怜庸,編輯器會根據(jù)tsconfig.json中的配置重新生成文件当犯,不過這個要編輯器支持
 "references": [],  // 一個對象數(shù)組,指定要引用的項目
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末割疾,一起剝皮案震驚了整個濱河市嚎卫,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌宏榕,老刑警劉巖拓诸,帶你破解...
    沈念sama閱讀 222,000評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異麻昼,居然都是意外死亡奠支,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,745評論 3 399
  • 文/潘曉璐 我一進店門抚芦,熙熙樓的掌柜王于貴愁眉苦臉地迎上來倍谜,“玉大人,你說我怎么就攤上這事叉抡《蓿” “怎么了?”我有些...
    開封第一講書人閱讀 168,561評論 0 360
  • 文/不壞的土叔 我叫張陵褥民,是天一觀的道長季春。 經(jīng)常有香客問我,道長轴捎,這世上最難降的妖魔是什么鹤盒? 我笑而不...
    開封第一講書人閱讀 59,782評論 1 298
  • 正文 為了忘掉前任蚕脏,我火速辦了婚禮,結(jié)果婚禮上侦锯,老公的妹妹穿的比我還像新娘驼鞭。我一直安慰自己,他們只是感情好尺碰,可當我...
    茶點故事閱讀 68,798評論 6 397
  • 文/花漫 我一把揭開白布挣棕。 她就那樣靜靜地躺著,像睡著了一般亲桥。 火紅的嫁衣襯著肌膚如雪洛心。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,394評論 1 310
  • 那天题篷,我揣著相機與錄音词身,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的肥哎。 我是一名探鬼主播,決...
    沈念sama閱讀 40,952評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼深啤,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了路星?” 一聲冷哼從身側(cè)響起溯街,我...
    開封第一講書人閱讀 39,852評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎洋丐,沒想到半個月后呈昔,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,409評論 1 318
  • 正文 獨居荒郊野嶺守林人離奇死亡友绝,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,483評論 3 341
  • 正文 我和宋清朗相戀三年韩肝,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片九榔。...
    茶點故事閱讀 40,615評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡哀峻,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出哲泊,到底是詐尸還是另有隱情剩蟀,我是刑警寧澤,帶...
    沈念sama閱讀 36,303評論 5 350
  • 正文 年R本政府宣布切威,位于F島的核電站育特,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜缰冤,卻給世界環(huán)境...
    茶點故事閱讀 41,979評論 3 334
  • 文/蒙蒙 一犬缨、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧棉浸,春花似錦怀薛、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,470評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至嗡害,卻和暖如春焚碌,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背霸妹。 一陣腳步聲響...
    開封第一講書人閱讀 33,571評論 1 272
  • 我被黑心中介騙來泰國打工十电, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人叹螟。 一個月前我還...
    沈念sama閱讀 49,041評論 3 377
  • 正文 我出身青樓摆出,卻偏偏與公主長得像,于是被迫代替她去往敵國和親首妖。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,630評論 2 359