單一儲存庫組態
如果你使用單一儲存庫,這些文件將協助你找出如何設定類型化程式碼檢查。如果你不想使用類型化程式碼檢查,你可以到此為止,不需要做任何其他特殊設定。
組態會根據你使用的設定而有所不同
一個根目錄的 tsconfig.json
如果你只有一個 tsconfig.json
檔案且其 include
路徑包含你想要檢查的所有檔案,你就可以直接在 typescript-eslint 中使用它,而不需要做進一步的設定。
如果其include
路徑無法包含所有要進行程式碼規範檢查之檔案,建議你建立一個名為tsconfig.eslint.json
的新設定檔,如下所示
tsconfig.eslint.json
{
// extend your base config to share compilerOptions, etc
"extends": "./tsconfig.json",
"compilerOptions": {
// ensure that nobody can accidentally use this config for a build
"noEmit": true,
},
"include": [
// whatever paths you intend to lint
"src",
"test",
"tools",
],
}
務必更新 ESLint 設定檔,使其指向這個新的 TSConfig。
每個套件一個tsconfig.json
(根目錄中可選擇新增一個)
於使用類型資訊進行程式碼規範檢查中引入的parserOptions.project
選項接受一個相對路徑陣列。路徑可以提供為Node globs。對於每個經過程式碼規範檢查的檔案,第一個符合專案路徑會被使用為其後盾 TSConfig。
- 平面設定檔
- 舊版設定檔
eslint.config.js
export default tseslint.config(
eslint.configs.recommended,
...tseslint.configs.recommendedTypeChecked,
{
languageOptions: {
parserOptions: {
project: true,
project: ['./tsconfig.eslint.json', './packages/*/tsconfig.json'],
tsconfigRootDir: import.meta.dirname,
},
},
},
);
.eslintrc.js
/* eslint-env node */
module.exports = {
extends: [
'eslint:recommended',
'plugin:@typescript-eslint/recommended-type-checked',
],
parser: '@typescript-eslint/parser',
parserOptions: {
project: true,
project: ['./tsconfig.eslint.json', './packages/*/tsconfig.json'],
tsconfigRootDir: import.meta.dirname,
},
plugins: ['@typescript-eslint'],
root: true,
};
parserOptions.project
中的寬泛 glob
在parserOptions.project
中使用寬泛 glob **
可能會降低程式碼規範檢查效能。與其使用**
遞迴檢查所有資料夾的 glob,請優先使用一次只使用單一*
的路徑。
- 平面設定檔
- 舊版設定檔
eslint.config.js
export default tseslint.config(
eslint.configs.recommended,
...tseslint.configs.recommendedTypeChecked,
{
languageOptions: {
parserOptions: {
project: ['./tsconfig.eslint.json', './**/tsconfig.json'],
project: ['./tsconfig.eslint.json', './packages/*/tsconfig.json'],
tsconfigRootDir: import.meta.dirname,
},
},
},
);
.eslintrc.js
/* eslint-env node */
module.exports = {
extends: [
'eslint:recommended',
'plugin:@typescript-eslint/recommended',
'plugin:@typescript-eslint/recommended-type-checked',
],
parser: '@typescript-eslint/parser',
parserOptions: {
project: ['./tsconfig.eslint.json', './**/tsconfig.json'],
project: ['./tsconfig.eslint.json', './packages/*/tsconfig.json'],
tsconfigRootDir: __dirname,
},
plugins: ['@typescript-eslint'],
root: true,
};
請參閱分析器選項 "專案" 中的 Glob 模式導致程式碼規範檢查速度變慢,以取得更多詳細資訊。
關於大型 (> 10) 多套件 monorepo 的重要注意事項
我們收到了回報,對於大型且/或互相依賴的專案,你可能會使用此方式遇到 OOM。我們的建議是先設定並測試,因為會觸發此 OOM 的情況非常少見。
請參閱#1192,以取得更多資訊和討論。
如果你確實遇到 OOM,請在此議題中留言並讓我們知道你的存放庫,資訊越多越好。作為暫時解決方法,可以考量下列選項之一
- 切換成一個根目錄
tsconfig.eslint.json
(請參閱一個根目錄tsconfig.json
) - 使用 shell 指令碼一次只對一個套件進行程式碼規範檢查,並使用上方現有的設定檔。
疑難排解
如果你在讓此功能正常運作時遇到問題,請查看我們的疑難排解常見問答。