Angular tsconfig.json æåç²¾è¦ | AIçæåç¿»è¯
é®é¢ï¼ tsconfig.json å¨ Angular 项ç®ä¸å¦ä½å·¥ä½ï¼
çæ¡ï¼
æ¦è¿°
Angular 项ç®ä¸ç tsconfig.json æä»¶å¨ TypeScript ç¼è¯è¿ç¨ä¸æ®æ¼çå
³é®è§è²ã宿¯ä¸ä¸ªé
ç½®æä»¶ï¼å TypeScript ç¼è¯å¨æä¾å° TypeScript 代ç ç¼è¯æ JavaScript çæç¤ºã
ç®å½ä¸åå¨ tsconfig.json æä»¶è¡¨æè¯¥ç®å½æ¯ TypeScript 项ç®çæ ¹ç®å½ã宿å®äºæ ¹æä»¶ä»¥åç¼è¯é¡¹ç®æéçç¼è¯å¨é项ã
Angular ä¸çå¤ä¸ª tsconfig æä»¶
ä½¿ç¨ CLI çææ° Angular é¡¹ç®æ¶ï¼é常ä¼å¾å° ä¸ä¸ª tsconfig æä»¶ï¼
tsconfig.json æä»¶å¯ä»¥ä½¿ç¨ extends 屿§ç»§æ¿å¦ä¸ä¸ªæä»¶çé
ç½®ãextends æ¯ä¸ä¸ªé¡¶çº§å±æ§ï¼ä¸ compilerOptionsãfilesãinclude å exclude å¹¶åï¼ãå
¶å¼æ¯ä¸ä¸ªå符串ï¼å
å«è¦ç»§æ¿çå¦ä¸ä¸ªé
ç½®æä»¶è·¯å¾ãåºç¡æä»¶çé
ç½®é¦å
å è½½ï¼ç¶å被继æ¿é
ç½®æä»¶ä¸çé
ç½®è¦çã
ä¾å¦ï¼tsconfig.app.json é常å¦ä¸æç¤ºï¼
{
"extends": "./tsconfig.json",
"compilerOptions": {
"outDir": "./out-tsc/app",
"types": []
},
"files": ["src/main.ts"],
"include": ["src/**/*.ts"],
"exclude": ["src/test.ts", "src/**/*.spec.ts"]
}
tsconfig.json çé¡¶çº§ç»æ
å®å 许å¼åè æå®ç¼è¯å¨é项ãå å«/æé¤æä»¶ï¼å¹¶å®ä¹é¡¹ç®çç»æã主è¦é¨åå æ¬ï¼
{
"compilerOptions": { },
"include": [ ],
"exclude": [ ],
"angularCompilerOptions": { }
}
é¨å 1ï¼compilerOptions
compilerOptions 屿§æ¯ä¸ä¸ªå¯¹è±¡ï¼ç¨äºæå® TypeScript ç¼è¯å¨é项ãè¯¥å±æ§å¨æ¯ä¸ª tsconfig.json æä»¶ä¸é½æ¯å¿
éçï¼å¹¶ä¸ºç¼è¯å¨æä¾æå
³éè¦ç¼è¯ç代ç çéè¦ä¿¡æ¯ã
å ³é®é项说æï¼
| Option | Description |
|---|---|
target |
ç¼è¯æç JavaScript çæ¬ï¼ä¾å¦ es2020ï¼ |
module |
æ¨¡åæ ¼å¼ï¼Angular éè¿ esnext åçäº tree-shaking |
moduleResolution |
模åè§£ææ¹å¼ï¼ä½¿ç¨ node 以å¹é
Node.js è¡ä¸º |
lib |
å¯ç¨å
ç½® APIï¼ä¾å¦ es2020ãdomï¼ |
strict |
å¯ç¨ææä¸¥æ ¼ç±»åæ£æ¥é项 |
noImplicitAny |
ç¦æ¢éå¼ any ç±»åçåé |
sourceMap |
为è°è¯çæ source map æä»¶ |
skipLibCheck |
è·³è¿ .d.ts 声ææä»¶çç±»åæ£æ¥ï¼ä»èå éæå»º |
esModuleInterop |
å è®¸ä» CommonJS 模åè¿è¡é»è®¤å¯¼å ¥ |
resolveJsonModule |
å
è®¸å¨ TypeScript ä¸å¯¼å
¥ .json æä»¶ |
baseUrl |
设置解æéç¸å¯¹æ¨¡ååç§°çåºç¡ç®å½ |
paths |
å°èªå®ä¹å¯¼å ¥å«åæ å°å°å®é æä»¶å¤¹è·¯å¾ |
é¨å 2ï¼include å exclude
include 屿§æ¯ä¸ä¸ªæä»¶ glob æ°ç»ï¼æå®åºå
å«å¨ç¼è¯è¿ç¨ä¸çæä»¶ãé»è®¤æ
åµä¸ï¼ç¼è¯å¨å°å
å«é¡¹ç®ä¸æææªè¢« exclude 屿§æé¤çæä»¶ã
exclude é项ä»
æ´æ¹ç±äº include 设置èå
å«çæä»¶ãå®ä¸ä¼é²æ¢æä»¶è¢«å
å«ââå®åªæ¯æ´æ¹ include 设置æ¾å°çå
容ã妿代ç 䏿 import è¯å¥ï¼exclude 䏿å®çæä»¶ä»å¯è½æä¸ºä»£ç åºçä¸é¨åã
示ä¾ï¼
"include": ["src/**/*.ts"],
"exclude": ["node_modules", "dist", "e2e"]
é¨å 3ï¼angularCompilerOptions
æ¤é¨åæ¯ Angular ä¸å± çï¼ç¨äºæ§å¶ Angular 模æ¿ç¼è¯å¨ï¼Ivyï¼ãéè¦éé¡¹å æ¬ï¼
é¨å 4ï¼è·¯å¾å«åï¼å¥å±æä½³å®è·µï¼
è·¯å¾æ å°å¯¹äºç®å导å
¥å¹¶é¿å
é¿ç¸å¯¹è·¯å¾é常æç¨ãbaseUrl 设置解æéç¸å¯¹æ¨¡ååç§°çåºç¡ç®å½ï¼è paths å°èªå®ä¹è·¯å¾æ å°å°ç¹å®æä»¶å¤¹ï¼ä½¿å¯¼å
¥æ´ç®æ´ã
"compilerOptions": {
"baseUrl": "./",
"paths": {
"@app/*": ["src/app/*"],
"@assets/*": ["src/assets/*"]
}
}
è¿å
许æ¨ä½¿ç¨ import { MyService } from '@app/services/my.service' è䏿¯ ../../services/my.serviceã
é¨å 5ï¼é误å¤çé项
noEmitOnError 鲿¢ç¼è¯å¨å¨åå¨ä»»ä½é误æ¶ååºè¾åºãè¿ç¡®ä¿åªçæå¹²åãæ é误çæå»ºââå¨ CI/CD 管éä¸å¾æç¨ã
ä¼åç Angular tsconfig.json 宿´ç¤ºä¾
{
"compileOnSave": false,
"compilerOptions": {
"target": "es2020",
"module": "esnext",
"moduleResolution": "node",
"lib": ["es2020"],
"skipLibCheck": true,
"strict": true,
"noImplicitAny": true,
"esModuleInterop": true,
"resolveJsonModule": true,
"sourceMap": true,
"noEmitOnError": true,
"baseUrl": "./",
"paths": {
"@app/*": ["src/app/*"],
"@assets/*": ["src/assets/*"]
}
},
"angularCompilerOptions": {
"strictInjectionParameters": true,
"strictInputAccessModifiers": true,
"strictTemplates": true
},
"include": ["src/**/*.ts"],
"exclude": ["node_modules", "dist", "e2e"]
}
åèèµæï¼
- Almost Perfect tsconfig.json Options for Angular Projects â Medium
- Angular Compiler Options â angular.dev
- What is a tsconfig.json â TypeScript Official Docs
- TSConfig Reference â TypeScript
- Angular tsconfig.json file decoded â LinkedIn
