ESlint 重大更新,你知道嗎?
4 月 5 日,ESLint 正式發(fā)布了 v9.0.0,這是 ESLint 的一次重大版本升級。此版本的更新如下:
- 安裝:可以通過 npm i eslint@9.0.0 --save-dev 命令進行更新升級。
- 遷移指南:由于存在大量更改,可以根據(jù)遷移指南[1]進行升級。
- Node.js 版本支持:目前,Node.js v20.x 是 LTS 版本,因此不再支持 v18.18.0 以及 v19.x 之前的所有 Node.js 版本。
- 默認配置格式:Flat config 現(xiàn)在是 ESLint 的默認配置格式,eslintrc 已正式棄用。
- 刪除部分格式化程序:包括 checkstyle、compact、jslint-xml、junit、tap、unix、visualstudio,后續(xù)需要通過獨立安裝包來使用。
- 刪除規(guī)則:刪除了 valid-jsdoc 和 require-jsdoc,建議改用 eslint-plugin-jsdoc插件。
- 更新推薦規(guī)則:eslint:recommended 配置已更新,包括重要的新規(guī)則,并刪除已棄用和不太重要的規(guī)則。
- 新增規(guī)則:新增 no-useless-assignment 規(guī)則,用于捕獲已為變量分配了值但該值從未被使用的情況。
- 全新 API:在主入口點新增函數(shù) loadESLint()。可以使用此函數(shù)來獲取 ESLint 類(以前的 FlatESLint 類)或 LegacyESLint 類(以前的 ESLint 類),從在扁平配置和 eslintrc API 之間進行切換。
- 更嚴格的 RuleTester 驗證:包括確保消息無未替換占位符、建議必須改變代碼、測試用例輸出與代碼不同、錯誤對象指定消息或ID、建議對象需含描述或ID及輸出,以及測試對象的屬性類型符合預期,并避免重復測試。
- 更好的作用域分析:更新了 eslint-scope 的行為,修復了一些長期存在的問題。
- 更新現(xiàn)有規(guī)則:
complexity 規(guī)則:現(xiàn)在納入了可選鏈和解構模式以及參數(shù)中的默認值,以提供更全面的代碼復雜度評估。
no-fallthrough規(guī)則:新增了reportUnusedFallthroughComment選項,以提供更多關于未使用落體注釋的反饋信息。
no-inner-declarations規(guī)則:的默認行為已更新。在v8.x版本中,它曾將塊內部定義的函數(shù)視為錯誤,但隨著 ES 2015 對塊作用域函數(shù)聲明的明確定義,現(xiàn)在默認不再對此發(fā)出警告。
no-misleading-character-class規(guī)則:改進了問題標識,現(xiàn)在將僅高亮顯示正則表達式中有問題的字符,而不是整個表達式。
no-restricted-imports規(guī)則:在路徑處理上進行了調整。在v8.x中,僅最后一個具有相同name屬性的路徑條目會生效;而在v9.0.0中,所有條目均有效,并允許為不同的導入名稱指定不同的錯誤消息。同時,該規(guī)則還新增了allowImportNames和allowImportNamePattern選項,提供更大的靈活性。
no-unused-vars規(guī)則:對varsIgnorePattern選項的使用范圍進行了調整,不再適用于捕獲的錯誤變量。同時,caughtErrors選項的默認值從"none"更改為"all",以更好地處理未使用的變量情況。此外,還新增了ignoreClassWithStaticInitBlock選項,以忽略具有靜態(tài)初始化塊的類中的未使用變量。
no-useless-computed-key規(guī)則:將enforceForClassMembers選項的默認值從false更改為true,旨在減少重構過程中可能產(chǎn)生的誤導性注釋。當此選項設置為true時,規(guī)則將禁止在不會發(fā)生穿透的情況下使用穿透注釋。
- 引入配置檢查器: 一個可視化工具,幫助理解和檢查 ESLint 配置文件。
圖片
- 其他更新:
38 個重大更新;
21 個新增功能;
14 個 Bug 修復;
80 處文檔更新;
11 個構建更新;
62 個其他更新;
ESLint v9.0.0 更新詳情:https://eslint.org/blog/2024/04/eslint-v9.0.0-released/
[1]遷移指南: https://eslint.org/docs/latest/use/migrate-to-9.0.0