[筆記] ESLint 8 → Eslint 9 升級指南 以 Vue3 + TypeScript + Prettier 為例

ESLint 9 於 2024 年春迎來了一次重大的版本更新,將過往的巢狀設定風格變為扁平化。因此過往常互相衝突的 eslint 與 prettier 也終於可以有完整整合的機會。這邊筆記下升級的過程。
notes-eslint-8-eslint-9-vue3-typescript-prettier-upgrade-1


內容

官方宣告這邊請:ESLint v9.0.0 released

升級步驟

由於這次為重大更新,從既有的升版上來會遭於各種阻礙和套件間的衝突,且有些套件不支援或是其實根本不用安裝。因此建議重新設定一份,然後將既有的 rules 給備份下來方便對照。

1. 將既有專案的 .eslintrc 相關檔案更名為 __.eslintrc 當備用
2. 移除 node_modules 和 pnpm-lock.json ( package-lock.json, yarn.lock… 等)。可下指令執行:
rm -rf node_modules pnpm-lock.json

3. 重新安裝 eslint,並調整你的 package.json 的指令。現在僅需要:
“lint”: “eslint . ” 即可,剩餘的相關設定都可在設定檔中搞定

4. 現在的設定檔名稱都為 eslint.config.(js|cjs|mjs) 。請按照需求使用

5. 設定檔由於都已扁平化。若要後續維護方便,建議可由上到下,分為以下幾個區塊:
A. 全域設定區塊,像是 ignores, languageOptions
B. 已有寫好的 config, plugin 設定區塊套件
C. 根據專案客製化調整的區塊,建議會以副檔名作為區隔。

6. 若要增加 TypeScript 支援,可以將設定檔透過 typescript-eslint 所提供的 tseslint.config() 方法來自動添加 ts 的檢查方法

7. 若要加上 Prettier,僅需要引入 eslint-plugin-prettier/recommended,並搭配你自己的 prettier 設定


設定檔內容

其實每一個設定檔物件,都是可以有以下設定的。不過要注意順序,後者會把前者給蓋掉。

ESLint 9 – Configuration Objects

可移除或改用的內容

1. @vue/eslint-config-prettier, @vue/eslint-config-typescript, @rushstack/eslint-patch
改用 eslint-config-prettier 和 eslint-plugin-prettier 即可
2. eslint-import-resolver-alias 和 eslint-plugin-import
改用 eslint-plugin-simple-import-sort
3. globals 和
@eslint/js 要新裝
4.
prettier-plugin-tailwindcss 可移除

程式碼


參考資料

1. ESLint 9 – Configuration Object
2. 2024年|ESlint9+Prettier从0开始配置教程
3. eslint-plugin-simple-import-sort

按讚加入粉絲團

延伸閱讀