
發佈於: 發佈說明 2 分鐘閱讀
我們剛剛發布了 ESLint v7.0.0,這是 ESLint 的重大版本升級。此版本新增了一些新功能,並修復了先前版本中發現的幾個錯誤。此版本也有一些重大變更,請仔細閱讀以下內容。
7.0.0 版本中有幾個重大變更。我們建立了一個遷移指南,說明這些重大變更並描述如何升級。
Node.js 8 已於 2019 年 12 月終止支援,我們在此版本中正式停止對其的支援。
eslint:recommended
已更新,新增了一些新規則:no-dupe-else-if
、no-import-assign
和 no-setter-return
。.eslintrc.js
和 bower_components/*
。此外,現在預設會忽略巢狀的 node_modules
目錄。overrides[].files
中,ESLint 現在會使用除了 .js
以外的副檔名來檢查檔案,無需使用 --ext
旗標!RuleTester
類別中新增額外的驗證,以改善外掛程式中自訂規則的測試。ESLint
類別CLIEngine
類別提供一個同步 API,它會阻礙平行檢查、支援在可共用設定/剖析器/外掛程式/格式器中使用 ES 模組以及新增視覺化顯示檢查執行進度的能力等功能的實作。新的 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
重大:類別在 accessor-pairs 中的預設為 true
(修復 #12811) (#12919) (Milos Djermanovic)78182e4
重大:將新規則新增至 eslint:recommended (修復 #12911) (#12920) (Milos Djermanovic)6423e11
重大:在 func-names 中檢查未命名的預設匯出 (修復 #12194) (#12195) (Chiawen Chen)4293229
重大:use-isnan 強制執行 switch case 的預設值為 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
重大:檢查 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
更新:強制執行 no-extra-boolean-cast 的 enforceForLogicalOperands (修正 #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 中處理註解 tokens (修正 #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 left string 修正 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
修正:擴充建議配置中的初始化錯誤 (修正 #12707) ( #12738 ) (YeonJuan)7551f0c
修正:沒有檢查遮蔽的 Object (修正 #12809) ( #13115 ) (Anix)988d842
修正:在 no-useless-concat 的報告中新增結束位置 (參考 #12334) ( #13110 ) (Milos Djermanovic)29f32db
修正:變更隱式檔案忽略的錯誤訊息邏輯 (修正 #12873) ( #12878 ) (Scott Hardin)eb1a43c
修正:require-await 忽略 async generators (修正 #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 fixer 中所需括號的邏輯不正確 ( #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 建立設定檔時,在檔案結尾前新增換行符號 (#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 規則在標記樣板中的縮排錯誤 (修復 #12122) (#12596) (YeonJuan)16a1c1f
修復:prefer-object-spread 規則在存取器中出現誤判 (修復 #12086) (#12784) (Milos Djermanovic)0d8c0af
修復:改善 computed-property-spacing 規則的報告位置 (#12795) (Milos Djermanovic)756b95d
修復:id-blacklist 規則應忽略 ObjectPatterns (修復 #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 規則中帶有註解的多重或巢狀範例 (參照 #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
雜項:為訊息使用 IDs (#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 新聞、案例研究、教學和資源。