tsconfig.json
{
"compileOnSave": false,
"compilerOptions": {
"baseUrl": "./",
//.表示當前文件所在目錄,./就代表這個目錄下的某個文件的路徑
"outDir": "./dist/out-tsc",
//所以根據(jù)baseUrl表示dist的路徑, 等同于相對于當前文件的路徑
"sourceMap": true,
// Enables experimental support for ES decorators.
"declaration": false,
// 生成相應(yīng)的 .d.ts文件。
"downlevelIteration": true,
// Provide full support for iterables in for..of, spread and destructuring when targeting ES5 or ES3.
"experimentalDecorators": true,
"module": "esnext",
// 指定生成哪個模塊系統(tǒng)代碼
// 使用哪種方式解析模塊,有 Classic 和 Node 兩種方式业舍。
// 如果使用相對路徑導入,兩種方式一致霹俺,都是根據(jù)當前文件路徑去尋找模塊
// 如果使用非相對路徑導入,如 import { Component } from '@angular/core'; 則
// 對于 Classic:
// 編譯器會從包含導入文件的目錄開始依次向上級目錄遍歷,嘗試定位匹配的聲明文件
// 對于 Node:
// 會在一個特殊的文件夾 node_modules里查找你的模塊拍屑。
// node_modules可能與當前文件在同一級目錄下,或者在上層目錄里坑傅。
// Node會向上級目錄遍歷僵驰,查找每個 node_modules直到它找到要加載的模塊。
"moduleResolution": "node",
"importHelpers": true,
// 編譯后會生成什么樣的代碼唁毒。
// 如果該值是es6蒜茴,你會發(fā)現(xiàn)生成的代碼不僅包含es6的,還默認包含es5的
// 因為目前瀏覽器還有很多不支持es6浆西,所以默認會有es5的
"target": "es5",
"typeRoots": [
// 對于一些默認沒有ts聲名的模塊粉私,告訴編譯器去哪里尋找它的聲明文件
// 比如 import * as $ from 'jquery';
// 編譯器會去 node_modules/@types 目錄下尋找聲明文件
// 至于怎么找到 jquery,就要再配合 types 這個屬性近零,這個屬性指定了具體去找哪個模塊
// https://stackoverflow.com/questions/39826848/typescript-2-0-types-field-in-tsconfig-json
"node_modules/@types"
],
"lib": [
"es2018",
"dom"
]
},
// https://angular.cn/guide/aot-compiler
"angularCompilerOptions": {
"fullTemplateTypeCheck": true,
"strictInjectionParameters": true
}
}
tsconfig.app.json
{
"extends": "./tsconfig.json",
"compilerOptions": {
"outDir": "./out-tsc/app",
"types": [] // https://stackoverflow.com/questions/39826848/typescript-2-0-types-field-in-tsconfig-json
},
// 需要編譯的文件
"files": [
"src/main.ts",
"src/polyfills.ts"
],
// 需要編譯的文件
// files 和 include 兩個屬性的組合定義了所有要編譯的文件
"include": [
"src/**/*.ts"
],
// 不需要編譯的
"exclude": [
"src/test.ts",
"src/**/*.spec.ts"
]
}