tsconfig.json 的作⽤
- ⽤於標識 TypeScript 項⽬的根路徑;
- ⽤於配置 TypeScript 編譯器;
- ⽤於指定編譯的⽂件。
tsconfig.json 重要字段
- files - 設置要編譯的⽂件的名稱;
- include - 設置需要進⾏編譯的⽂件,⽀持路徑模式匹配;
- exclude - 設置⽆需進⾏編譯的⽂件,⽀持路徑模式匹配;
- compilerOptions - 設置與編譯流程相關的選項。
compilerOptions 選項
compilerOptions ⽀持很多選項,常⻅的有 baseUrl 、 target 、 moduleResolution 和 lib 等。
compilerOptions 每個選項的詳細說明如下:
{
"compilerOptions": {
/* 基本選項 */
"target": "es5", // 指定 ECMAScript ⽬標版本: 'ES3'(default), 'ES5', 'ES6'/'ES2015', 'ES2016', 'ES2017', or 'ESNEXT'
"module": "commonjs", // 指定使⽤模塊: 'commonjs', 'amd',
'system', 'umd' or 'es2015'
"lib": [], // 指定要包含在編譯中的庫⽂件
"allowJs": true, // 允許編譯 javascript ⽂件
"checkJs": true, // 報告 javascript ⽂件中的錯誤
"jsx": "preserve", // 指定 jsx 代碼的⽣成: 'preserve',
'react-native', or 'react'
"declaration": true, // ⽣成相應的 '.d.ts' ⽂件
"sourceMap": true, // ⽣成相應的 '.map' ⽂件
"outFile": "./", // 將輸出⽂件合並為⼀個⽂件
"outDir": "./", // 指定輸出⽬錄
"rootDir": "./", // ⽤來控制輸出⽬錄結構 --outDir.
"removeComments": true, // 刪除編譯后的所有的注釋
"noEmit": true, // 不⽣成輸出⽂件
"importHelpers": true, // 從 tslib 導⼊輔助⼯具函數
"isolatedModules": true, // 將每個⽂件做為單獨的模塊 (與
'ts.transpileModule' 類似).
/* 嚴格的類型檢查選項 */
"strict": true, // 啟⽤所有嚴格類型檢查選項
"noImplicitAny": true, // 在表達式和聲明上有隱含的 any類型時報錯
"strictNullChecks": true, // 啟⽤嚴格的 null 檢查
"noImplicitThis": true, // 當 this 表達式值為 any 類型的時候,⽣
成⼀個錯誤
"alwaysStrict": true, // 以嚴格模式檢查每個模塊,並在每個⽂件⾥加
⼊ 'use strict'
/* 額外的檢查 */
"noUnusedLocals": true, // 有未使⽤的變量時,拋出錯誤
"noUnusedParameters": true, // 有未使⽤的參數時,拋出錯誤
"noImplicitReturns": true, // 並不是所有函數⾥的代碼都有返回值時,拋出
錯誤
"noFallthroughCasesInSwitch": true, // 報告 switch 語句的 fallthrough 錯
誤。(即,不允許 switch 的 case 語句貫穿)
/* 模塊解析選項 */
"moduleResolution": "node", // 選擇模塊解析策略: 'node' (Node.js)
or 'classic' (TypeScript pre-1.6)
"baseUrl": "./", // ⽤於解析⾮相對模塊名稱的基⽬錄
"paths": {}, // 模塊名到基於 baseUrl 的路徑映射的列表
"rootDirs": [], // 根⽂件夾列表,其組合內容表示項⽬運⾏時的
結構內容
"typeRoots": [], // 包含類型聲明的⽂件列表
"types": [], // 需要包含的類型聲明⽂件名列表
"allowSyntheticDefaultImports": true, // 允許從沒有設置默認導出的模塊中默認導⼊。
/* Source Map Options */
"sourceRoot": "./", // 指定調試器應該找到 TypeScript ⽂件⽽
不是源⽂件的位置
"mapRoot": "./", // 指定調試器應該找到映射⽂件⽽不是⽣成⽂件
的位置
"inlineSourceMap": true, // ⽣成單個 soucemaps ⽂件,⽽不是將
sourcemaps ⽣成不同的⽂件
"inlineSources": true, // 將代碼與 sourcemaps ⽣成到⼀個⽂件
中,要求同時設置了 --inlineSourceMap 或 --sourceMap 屬性
/* 其他選項 */
"experimentalDecorators": true, // 啟⽤裝飾器
"emitDecoratorMetadata": true // 為裝飾器提供元數據的⽀持
}
}
以上參考《重學ts-v1.0》
