
發布於: 公告 5 分鐘閱讀
我們剛剛推送了 ESLint v7.0.0,這是 ESLint 的主要版本升級。此版本新增了一些新功能,並修復了先前版本中發現的幾個錯誤。此版本也包含一些重大變更,因此請仔細閱讀以下內容。
7.0.0 版本中有幾項重大變更。我們建立了一份遷移指南,以說明重大變更並描述如何升級。
Node.js 8 已於 2019 年 12 月終止生命週期 (EOL),我們在此版本中正式停止對其的支援。
eslint:recommended
已使用一些新規則進行更新:no-dupe-else-if
、no-import-assign
和 no-setter-return
。.eslintrc.js
和 bower_components/*
。此外,現在預設會忽略巢狀的 node_modules
目錄。.js
的檔案執行 lint,如果這些檔案已在 overrides[].files
中明確定義 - 無需使用 --ext
旗標!RuleTester
類別,以改善在外掛程式中測試自訂規則的功能。ESLint
類別CLIEngine
類別提供一個同步 API,它會阻礙諸如平行 linting、在可共用組態/解析器/外掛程式/格式器中支援 ES 模組,以及新增視覺化顯示 linting 執行進度的功能等特性的實作。新的 ESLint
類別提供一個非同步 API,ESLint 核心現在將在未來使用它。CLIEngine
將在可預見的未來保留在核心中,但可能會在未來的重大版本中移除。4ef6158
重大變更:espree@7.0.0 (#13270) (Kai Cataldo)78c8cda
重大變更:RuleTester 改善 (參考 eslint/rfcs#25) (#12955) (Milos Djermanovic)185982d
重大變更:改善外掛程式解析 (參考 eslint/rfcs#47) (#12922) (Toru Nagashima)48b122f
重大變更:變更使用 --config 的相對路徑 (參考 eslint/rfcs#37) (#12887) (Toru Nagashima)4af06fc
重大變更:在 RuleTester 中,使用未知的錯誤屬性進行測試應失敗 (#12096) (Milos Djermanovic)afa9aac
重大變更:類別預設 true
computed-property-spacing (修正 #12812) (#12915) (Milos Djermanovic)7d52151
重大變更:類別預設 true
accessor-pairs (修正 #12811) (#12919) (Milos Djermanovic)78182e4
重大變更:將新規則新增至 eslint:recommended (修正 #12911) (#12920) (Milos Djermanovic)6423e11
重大變更:檢查 func-names 中未命名的預設匯出 (修正 #12194) (#12195) (Chiawen Chen)4293229
重大變更:use-isnan enforceForSwitchCase 預設 true
(修正 #12810) (#12913) (Milos Djermanovic)cf38d0d
重大變更:變更預設忽略模式 (參考 eslint/rfcs#51) (#12888) (Toru Nagashima)bfe1dc4
重大變更:no-dupe-class-members 檢查一些計算鍵 (修正 #12808) (#12837) (Milos Djermanovic)c2217c0
重大變更:使 radix
規則更嚴格 (#12608) (fisker Cheung)1aa021d
重大變更:lint overrides
檔案 (修正 #10828, 參考 eslint/rfcs#20) (#12677) (Toru Nagashima)b50179d
重大變更:檢查 no-extra-parens 中的指派目標 (#12490) (Milos Djermanovic)d86a5bb
重大變更:檢查 array-callback-return 中的 flatMap (修正 #12235) (#12765) (Milos Djermanovic)cf46df7
重大變更:指令註解中的描述 (參考 eslint/rfcs#33) (#12699) (Toru Nagashima)7350589
重大變更:某些規則可識別 bigint 字面值 (修正 #11803) (#12701) (Toru Nagashima)1118fce
重大變更:關於 '~/.eslintrc' 的執行階段棄用 (參考 eslint/rfcs#32) (#12678) (Toru Nagashima)2c28fbb
重大變更:停止支援 Node.js 8 (參考 eslint/rfcs#44) (#12700) (Toru Nagashima)f9774ec
新增:新增 default-case-last 規則 (修正 #12665) (#12668) (Milos Djermanovic)a1d999c
新增:新增 no-useless-backreference 規則 (修正 #12673) (#12690) (Milos Djermanovic)985dac3
新增:新增 no-restricted-exports 規則 (修正 #10428) (#12546) (Milos Djermanovic)0b1d65a
更新:改善 array-callback-return 的報告位置 (參考 #12334) (#13109) (Milos Djermanovic)d3aac53
更新:報告 no-unexpected-multiline 中的反引號位置 (參考 #12334) (#13142) (Milos Djermanovic)bcafd0f
更新:新增 ESLint API (參考 eslint/rfcs#40) (#12939) (Kai Cataldo)5c1bdeb
更新:改善 getter-return 的報告位置 (參考 #12334) (#13164) (Milos Djermanovic)e7c1d4b
更新:棄用 Node.js & CommonJS 規則 (#12898) (Kai Cataldo)af4472f
更新:改善 new-cap 的報告位置 (參考 #12334) (#13136) (Milos Djermanovic)a784dac
更新:改善 newline-per-chained-call 的報告位置 (參考 #12334) (#13116) (Milos Djermanovic)5e07574
更新:改善 space-before-function-paren 的報告位置 (#13128) (Chiawen Chen)17e2fe4
更新:改善嚴重修正錯誤的錯誤訊息 (#13120) (Brad Zacher)438dcbb
更新:改善 comma-style 的報告位置 (參考 #12334) (#13111) (Chiawen Chen)85b7254
更新:no-inner-declarations 在非區塊中出現誤判 (修正 #12222) (#13062) (Anix)6631ef1
更新:改善 no-empty-function 的報告位置 (參考 #12334) (#13121) (Milos Djermanovic)e0f1b6c
更新:no-magic-numbers 中更嚴格的陣列索引檢查 (修正 #12845) (#12851) (Milos Djermanovic)362713c
更新:改善 template-curly-spacing 的報告位置 (#12813) (Milos Djermanovic)105384c
更新:報告 operator-linebreak 中的運算子位置 (參考 #12334) (#13102) (Milos Djermanovic)081e240
更新:在 no-implied-eval 中支援 globalThis (修正 #12670) (#13105) (YeonJuan)a1370ab
更新:報告 no-obj-calls 中的建構函式呼叫 (#12909) (Milos Djermanovic)085979f
更新:在 no-implied-eval 中考慮 env (修正 #12733) (#12757) (YeonJuan)e90b29b
更新:允許在 RuleTester 中使用資料測試建議 (修正 #12606) (#12635) (Milos Djermanovic)183e300
更新:支援 globalThis (參考 #12670) (#12774) (YeonJuan)1299705
更新:acorn 版本 (#13016) (Idan Avrahami)a5b41a7
更新:no-restricted-modules 處理 TemplateLiteral (修正 #12926) (#12927) (Michal Piechowiak)051567a
更新:檢查 id-length 中陣列模式中的識別符 (修正 #12832) (#12839) (YeonJuan)9038a29
更新:func-names as-needed
與 AssignmentPattern 出現誤判 (#12932) (Milos Djermanovic)7747177
更新:報告 id-blacklist 中的重新命名 id 解構 (修正 #12807) (#12923) (YeonJuan)77df505
更新:檢查物件解構中的重新命名識別符 (修正 12827) (#12881) (YeonJuan)41de9df
更新:enforceForLogicalOperands no-extra-boolean-cast (修正 #12137) (#12734) (jmoore914)1ee6b63
更新:檢查 yoda 中的樣板字串 (修正 #12863) (#12876) (YeonJuan)439c833
更新:array-callback-return 檢查 Array.forEach (修正 #12551) (#12646) (Gabriel R Sezefredo)03a69db
更新:檢查 no-proto, no-iterator 中的樣板字串 (修正 #12801) (#12806) (YeonJuan)562e784
更新:修正 no-magic-numbers 與 ignoreArrayIndexes 的誤判 (#12805) (Milos Djermanovic)0460748
更新:檢查 no-constant-condition 中的樣板字串 (修正 #12815) (#12816) (YeonJuan)e59d775
更新:為 array-element-newline 分隔 pattern/expression 選項 (#11796) (jacobparish)f8f115a
更新:處理 template-curly-spacing 中的註解 token (修正 #12744) (#12775) (YeonJuan)9a93d9e
更新:修正 no-restricted-imports export * 誤判 (修正 #12737) (#12798) (Milos Djermanovic)68becbd
更新:修正 no-restricted-imports importNames 報告 (修正 #12282) (#12711) (Andrey Alexandrov)ae959b6
更新:報告 no-extra-parens 中的雙重多餘括號 (修正 #12127) (#12697) (YeonJuan)b2c6209
更新:修正 no-extra-parens CallExpression#callee 誤判 (#12743) (Milos Djermanovic)14b42c3
更新:修正計算 max-len 中的 jsx 註解長度 (修正 #12213) (#12661) (YeonJuan)313f70a
更新:將 outerIIFEBody: “off” 新增至 indent 規則 (修正 #11377) (#12706) (Kai Cataldo)3fa39a6
更新:處理計算屬性鍵中本機不支援的 regex (#12056) (Milos Djermanovic)8f1020f
更新:no-void 新增選項以允許 void 作為陳述式 (#12613) (Brad Zacher)bb6cf50
更新:為 indent 規則新增 offsetTernaryExpressions 選項 (#12556) (Adam Stankiewicz)4c0b028
修正:從建置流程中移除 Node.js 和 CommonJS 類別 (#13242) (Kai Cataldo)d85e291
修正:yoda 左側字串修正 exceptRange (修正 #12883) (#13052) (Anix)8e7a2d9
修正:func-call-spacing “never” 報告錯誤訊息 (修正 #13190) (#13193) (Milos Djermanovic)ebc28d7
修正:從 --ext CLI 選項中移除預設的 .js (#13176) (Brandon Mills)c9a5035
修正:newBasePath 應為絕對路徑 (修正 #12850) (#13078) (Nick Harris)301b450
修正:no-extra-parens export default 序列運算式誤判 (#13096) (Milos Djermanovic)bfa811c
修正:擴充建議組態時的 init 錯誤 (修正 #12707) (#12738) (YeonJuan)7551f0c
修正:未檢查陰影 Object (修正 #12809) (#13115) (Anix)988d842
修正:在 no-useless-concat 的報告中新增結束位置 (參考 #12334) (#13110) (Milos Djermanovic)29f32db
修正:變更隱含檔案忽略的錯誤訊息邏輯 (修正 #12873) (#12878) (Scott Hardin)eb1a43c
修正:require-await 忽略非同步產生器 (修正 #12459) (#13048) (Anix)920465b
修正:getNameLocationInGlobalDirectiveComment 結束位置 (參考 #12334) (#13086) (Milos Djermanovic)ae14a02
修正:在 no-extra-bind 的報告中新增結束位置 (參考 #12334) (#13083) (Milos Djermanovic)0c20bc0
修正:檢查 camelcase 中的指派屬性目標 (修正 #13025) (#13027) (YeonJuan)8d50a7d
修正:在 no-prototype-builtins 的報告中新增結束位置 (參考 #12334) (#13087) (Milos Djermanovic)3e4e7f8
修正:no-extra-boolean-cast 修正器中所需括號的邏輯不正確 (#13061) (Milos Djermanovic)aef9488
修正:允許在 id-blacklist 中參考外部全域變數 (修正 #12567) (#12987) (Milos Djermanovic)4955c50
修正:移除 prefer-object-spread 中的類型引數 (修正 #13058) (#13063) (Milos Djermanovic)dbe357d
修正:檢查 prefer-numeric-literals 中的樣板字串 (修正 #13045) (#13046) (YeonJuan)2260611
修正:在 no-empty-function 的 allow 方法中新增 async (修正 #12768) (#13036) (Anix)7224eee
修正:no-plusplus 允許在 for afterthought 中使用逗號運算元 (修正 #13005) (#13024) (Milos Djermanovic)7598cf8
修正:透過 --init 建立組態時,在 eof 之前換行 (#12952) (Andreas Lind)0243549
修正:camelcase 與計算屬性出現誤判 (修正 #13022) (#13023) (Milos Djermanovic)6cef0d5
修正:檢查 astUtils.canTokensBeAdjacent 中的除法運算子 (#12879) (Milos Djermanovic)afde78b
修正:curly 移除 if 和 else 之間必要的括號 (修正 #12928) (#12943) (Milos Djermanovic)4797fb2
修正:arrow-body-style 與物件字面值主體發生當機 (修正 #12884) (#12886) (Milos Djermanovic)de14d1c
修正:wrap-iife 自動修正移除強制性括號 (#12905) (Milos Djermanovic)5775b06
修正:選擇性地允許成員名稱中使用底線 (#11972) (Edgardo Avilés)0dfc3ff
修正:在 no-eval 的報告中新增結束位置 (#12960) (Milos Djermanovic)1f1424c
修正:修正 no-extra-parens 中不一致地運作的選項 (修正 #12717) (#12843) (YeonJuan)b5adcaa
修正:使 YieldExpression 可擲回 (修正 #12880) (#12897) (YeonJuan)95e0586
修正:id-blacklist 在重新命名的匯入中出現誤判 (#12831) (Milos Djermanovic)dadc892
修正:operator-assignment 在相鄰的除法指派中當機 (#12844) (Milos Djermanovic)a9d92f9
修正:radix 規則在停用的全域變數中當機 (#12824) (Milos Djermanovic)533c114
修正:multiline-comment-style 規則在 * 之後新增額外空格 (修正 #12785) (#12823) (Karthik Priyadarshan)80309c3
修正:no-constant-condition 無法內省陣列 (修正 #12225) (#12307) (Sean Gray)de4fa7c
修正:indent 中標記樣板的 indent 錯誤 (修正 #12122) (#12596) (YeonJuan)16a1c1f
修正:prefer-object-spread 與 accessor 出現誤判 (修正 #12086) (#12784) (Milos Djermanovic)0d8c0af
修正:改善 computed-property-spacing 的報告位置 (#12795) (Milos Djermanovic)756b95d
修正:id-blacklist 應忽略 ObjectPattern (修正 #12787) (#12792) (JP Ramassini)01ff791
修正:在測試輸出中正確顯示管道字元 (#12771) (Brad Zacher)00ddfff
修正:JUnit 的 Windows 路徑剖析 (修正 #12507) (#12509) (Michael Wall)1aff21b
修正:no-mixed-spaces-and-tabs 報告多行字串 (#12566) (Milos Djermanovic)b5c8d73
文件:更新 7.0.0 遷移指南以保持一致性 (#13267) (Kai Cataldo)356fdb4
文件:新增遷移指南 (#12692) (Toru Nagashima)56d2bee
文件:修正錯字 (#13204) (Nitin Kumar)516f253
文件:為 object-curly-newline 規則新增匯入範例 (參考 #12018) (#13177) (Luke Lewis)b398e0b
文件:在 prefer-rest-params 文件中新增規則註解 (#13191) (YeonJuan)c41de38
文件:修正 curly multi-or-nest 範例中的註解 (參考 #12972) (#13151) (Milos Djermanovic)57221d5
文件:修正 no-inner-declarations 範例中的 eslint 註解 (#13152) (Milos Djermanovic)5dfd4eb
文件:no-return-assign 中使用箭頭函式的範例 (修正 #13135) (#13138) (Anix)adc8fa8
文件:釐清 spaced-comment 中的例外狀況 (修正 #13032) (#13126) (Anix)b228f95
文件:更新 README 團隊和贊助者 (ESLint Jenkins)6c069f9
文件:在範例中的程式碼區塊新增註解 (#13089) (Kibeom Kwon)ee1f053
文件:修正錯字 (#13092) (Max Coplan)76324ac
文件:為規則新增延伸閱讀 (#13084) (Max Coplan)3f7c9bf
文件:闡明 no-use-before-define 中的 variables 選項 (修正 #12986) (#13017) (Anix)9ac5b9e
文件:闡明預設忽略 node_modules (修正 #13006) (#13054) (Mika Kuijpers)0de91f3
文件:從錯誤範例中移除正確程式碼 (#13060) (Anix)af7af9d
文件:更新治理規範 (#13055) (Nicholas C. Zakas)79ac6cd
文件:為 func-style 新增較不令人困惑的解釋 (修正 #12900) (#13004) (Anix)b8e20d3
文件:提及 TypeScript 的編譯器檢查 (#12903) (Benny Neugebauer)e997f32
文件:更新 arrow-parens 以修正輕微文法問題 (#12962) (Tom)cf14355
文件:修正自訂解析器文件連結 (#12965) (Brandon Mills)f479f6f
文件:參考正確的設定檔名稱 (#12885) (Patrick Kilgore)8d5c434
文件:修正網站產生的類別描述 (修正 #12894) (#12930) (Kai Cataldo)05380e6
文件:從文件中移除關於分號的主張 (#12944) (Luke Sikina)824d235
文件:為 CLIEngine 新增 errorOnUnmatchedPattern 選項 (#12834) (Arthur Denner)33efd71
文件:修正拼字錯誤 (#12861) (Bryan Mishkin)a5b3c5f
文件:更新 README 團隊和贊助者 (ESLint Jenkins)d6c313d
文件:在 prefer-regex-literals 範例中新增遺失的 eslint 註解 (#12858) (Milos Djermanovic)aea1729
文件:修正 Node.js API TOC 中的錨點連結 (#12821) (Matija Marohnić)02fcc05
文件:改善 sort-keys (#12791) (Steven Vachon)25eb703
文件:修正 max-lines 規則文件中的失效連結 (#12766) (Christian Bundy)098b67d
文件:修正 brace-style.md 中的輕微錯字 (#12749) (Marko Kaznovac)b23ad0d
文件:變更 working-with-rules.md 中的失效連結 (#12732) (Damien Cassou)b98d8bd
升級:eslint-release@2.0.0 (#13271) (Kai Cataldo)3eeae56
升級:一些 (開發) 依賴 (#13155) (薛定谔的猫)95e1c70
升級:levn@0.4.1 (修正 #9366) (#13140) (Kai Cataldo)2111c52
升級:esquery@1.2.0 (#13076) (Milos Djermanovic)95613d4
升級:espree@6.2.1 (#13026) (Kai Cataldo)e632c31
升級:數個依賴 (#12753) (Toru Nagashima)8d1b4db
建置:7.0.0-rc.0 的變更日誌更新 (ESLint Jenkins)2531b80
建置:7.0.0-alpha.3 的變更日誌更新 (ESLint Jenkins)2e8f193
建置:7.0.0-alpha.2 的變更日誌更新 (ESLint Jenkins)e9f1073
建置:7.0.0-alpha.1 的變更日誌更新 (ESLint Jenkins)c8c1b2b
建置:7.0.0-alpha.0 的變更日誌更新 (ESLint Jenkins)4e16957
建置:更新瀏覽器建置 (#12693) (Toru Nagashima)827259e
建置:eslint-config-eslint 發布的 package.json 更新 (ESLint Jenkins)401a687
雜項:修正預發布版本的規則列表 (#13230) (Kai Cataldo)2ce6bed
雜項:為巢狀陣列新增測試 (#13145) (Anix)6b7030b
雜項:在 Node.js v14 上執行測試 (#13210) (fisker Cheung)e13256e
雜項:在 config-initializer 中使用 espree.latestEcmaVersion (#13157) (Kai Cataldo)e4f57b7
雜項:為 array-element-newline 新增巢狀陣列測試 (#13161) (Anix)bc0c02c
雜項:將鎖定檔新增至 gitignore (#13015) (Anix)26267ed
雜項:更新 GitHub Actions (#12984) (Pig Fang)472025f
雜項:更新 eslint-config-eslint 中的 space-before-function-paren (#12966) (Kai Cataldo)1907e57
雜項:新增 Twitter 和 Open Collective 徽章 (#12877) (Kai Cataldo)b7f0d20
雜項:使用一致的徽章樣式 (#12825) (fisker Cheung)3734a66
雜項:為訊息使用 ID (#12859) (Gareth Jones)0cae920
雜項:重新命名陰影全域變數 (#12862) (Tony Brix)055b80d
雜項:修正 complexity.js 中的錯字 (#12864) (Kyle Shevlin)9f39ef0
雜項:PULL_REQUEST_TEMPLATE.md 中的錯字 (#12848) (Balázs Orbán)a60d5cd
雜項:修正 no-irregular-whitespace.js 中的錯字 (#12847) (Balázs Orbán)691d19a
雜項:新增遺失的 ecmaVersion
2020/11 類型值 (#12833) (Piotr Błażejewicz (Peter Blazejewicz))f5b9656
雜項:為 no-constant-condition 新增測試 (#12836) (Milos Djermanovic)10a79a6
雜項:內部採用 eslint-plugin/require-meta-docs-description
(#12762) (Bryan Mishkin)561b6d4
雜項:將先決條件檢查清單新增至 PR 範本 (#12790) (Kai Cataldo)9dfc850
雜項:重構以在多個規則中使用 messageId (#12715) (Brad Zacher)b77b858
雜項:修正 one-var 規則的 separateRequires 測試 (#12709) (Milos Djermanovic)e4df7df
雜項:為 RuleTester 測試案例新增 JSDoc 類型 (#12325) (Chiawen Chen)4744397
雜項:移除 max-lines-per-function 中未使用的程式碼 (#12659) (YeonJuan)39f5a45
雜項:為 for-direction 新增測試案例 (#12698) (YeonJuan)b340304
雜項:新增額外測試,改善文件 (#12492) (Kevin Partington)最新的 ESLint 新聞、案例研究、教學和資源。