
我們聽見你們的心聲了:ESLint 使用者尚未升級到 ESLint v9.x 的最大原因之一,是遷移設定檔似乎既困難又複雜。有些外掛程式支援扁平化配置和 ESLint v9.x 規則 API,有些則不支援。有時您需要使用 FlatCompat
,有時您需要使用相容性工具。雖然我們在遷移指南中盡可能涵蓋了許多內容,但仔細檢查您的配置並進行必要的更改可能需要時間。
這就是為什麼我們很高興宣布發布 ESLint 配置遷移工具。此工具旨在將 .eslintrc.*
檔案轉換為 eslint.config.js
檔案,包括
.eslintrc
、.eslintrc.json
、.eslintrc.yml
和.eslintrc.yaml
檔案的 1 對 1 遷移。- 簡單的
.eslintrc.js
、.eslintrc.cjs
和.eslintrc.mjs
檔案的合理遷移。(如果您使用變數來建構您的配置,這些檔案通常需要編輯)。 - 自動將
.eslintignore
模式包含到您的新設定檔中。 - 必要時自動使用
FlatCompat
。 - 必要時自動使用相容性工具。
重要事項: 此版本的工具除了最簡單的 JavaScript 設定檔(.eslintrc.js
、.eslintrc.cjs
、.eslintrc.mjs
)外,不處理任何其他檔案。它的工作原理是評估檔案,然後遷移計算出的配置。因此,它不會保留檔案內的任何邏輯。我們希望在未來的版本中新增此功能。
使用配置遷移工具
您可以直接從 npm 使用配置遷移工具,而無需透過 npx
或類似指令安裝它。傳遞要轉換的 .eslintrc.*
檔案位置,如下所示
npx @eslint/migrate-config .eslintrc.json
# or
yarn dlx @eslint/migrate-config .eslintrc.json
# or
pnpm dlx @eslint/migrate-config .eslintrc.json
# or
bunx @eslint/migrate-config .eslintrc.json
預設情況下,此命令將輸出 eslint.config.mjs
檔案。如果您想要改為輸出 CommonJS 檔案,請新增 --commonjs
標記
npx @eslint/migrate-config .eslintrc.json --commonjs
# or
yarn dlx @eslint/migrate-config .eslintrc.json --commonjs
# or
pnpm dlx @eslint/migrate-config .eslintrc.json --commonjs
# or
bunx @eslint/migrate-config .eslintrc.json --commonjs
限制
配置遷移工具的目標是降低您首次使用時遇到錯誤的可能性,因此,它積極採用 FlatCompat
和相容性工具。這表示產生的設定檔可能不是最佳的,您或許可以自行簡化它。
產生設定檔後,您應該檢查以下項目
- 是否有更新版本的外掛程式? 有可能存在更新版本的外掛程式,它們本身完全支援 ESLint v9.x,並且不需要任何相容性工作。最好始終升級到您使用的外掛程式的最新版本。
- 您在其他目錄中是否有
.eslintrc.*
設定檔? 新的配置系統不會合併來自上層目錄的設定檔。如果您使用.eslintrc.*
檔案來覆寫特定目錄中的配置,您需要將該配置移至您的主要eslint.config.*
檔案中。 - 您是否正在使用
--ext
CLI 標記? 如果是,您需要在您的設定檔中 建立一個條目,以符合您用於在命令列上傳遞的檔案副檔名。
產生的設定檔可能無法在不進行修改的情況下運作,但它應該能讓您非常接近目標。
結論
當我們發布 ESLint v9.x 時,我們認為提供配置遷移指南可以幫助大多數使用者完成過渡到新的配置系統。遺憾的是,我們沒有預料到大家在這個過程中會遇到的所有挑戰。我們希望配置遷移工具能讓這個過渡過程在未來變得更容易。由於人們配置 ESLint 的方式多種多樣,因此不可能讓每個設定檔在遷移後 100% 運作,但我們認為這個工具應該可以避免大多數繁瑣的轉換步驟,讓您更快地在 ESLint v9.x 中啟動並執行。