AVt天堂网 手机版,亚洲va久久久噜噜噜久久4399,天天综合亚洲色在线精品,亚洲一级Av无码毛片久久精品

當前位置:首頁 > 科技  > 軟件

ESlint 終于把這個大麻煩解決了!

來源: 責編: 時間:2023-10-31 10:26:33 268觀看
導讀ESLint 將在 11 月 3 日發布的 v8.53.0 版本中棄用代碼風格規則,也就是那些強制執行關于空格、分號、字符串格式等的代碼約定的規則。這樣,同時使用 ESlint 和 Prettier 時就不會出現沖突問題了!ESlint 是一個代碼檢測工

ESLint 將在 11 月 3 日發布的 v8.53.0 版本中棄用代碼風格規則,也就是那些強制執行關于空格、分號、字符串格式等的代碼約定的規則。這樣,同時使用 ESlint 和 Prettier 時就不會出現沖突問題了!ciu28資訊網——每日最新資訊28at.com

ESlint 是一個代碼檢測工具,其可以進行代碼質量和代碼風格的靜態分析,捕獲潛在錯誤和不一致的編碼習慣。而 Prettier 是一個代碼格式化工具,其可以對代碼進行格式化,確保整個項目中的代碼風格保持一致。對于代碼中的一些問題,ESlint 可能無法正確格式化,這時候 Prettier 就可以很好地完成格式化的任務。因此,我們通常會組合使用 ESlint 和 Prettier,來保證代碼質量和風格統一( ESlint 負責檢測代碼質量,Prettier 負責格式化代碼)。ciu28資訊網——每日最新資訊28at.com

但是兩者都有格式化代碼風格的規則,ESlint 將代碼進行格式化后,會重新被 Prettier 再次格式化。因此最終的格式化效果是 Prettier 提供的。而代碼校驗使用的是 ESLint,因此可能會出現沖突。ESlint 棄用代碼風格規則后就可以專注于監測代碼質量,而 Prettier 專注于監測代碼風格。ciu28資訊網——每日最新資訊28at.com

背景

ESLint 于 2013 年發布,當時關于是否應該將源代碼格式化作為代碼規范工具的一部分是存在爭議的。JSLint 是最早出現的 JavaScript 代碼規范工具,將其作者的代碼格式化偏好編碼到了該工具中,這些偏好在 JSLint 的繼任者 JSHint 中有所保留。2013 年,JSHint 宣布他們將廢除與代碼風格相關的選項,并計劃在下一個主要版本中刪除它們。盡管這些選項從未被實際刪除,但 JSHint 仍然給出了此警告,提醒用戶該選項已被棄用:ciu28資訊網——每日最新資訊28at.com

Warning This option has been deprecated and will be removed in the next major release of JSHint。// 警告:此選項已被棄用,并將在 JSHint 的下一個主要版本中刪除。JSHint is limiting its scope to issues of code correctness. If you would like to enforce rules relating to code style, check out the JSCS project.// JSHint 將其范圍限制在代碼正確性問題上。如果你想強制執行與代碼風格相關的規則,請查看 JSCS 項目。

JSCS 項目的誕生就是為了滿足 JavaScript 開發人員對代碼格式設置的日益具體化的需求。與 ESLint 同時出現的 JSCS 在早期曾經歷了一段試驗期,人們嘗試著使用不同組合的 JSHint、JSCS 和 ESLint 來滿足他們的格式化需求。ciu28資訊網——每日最新資訊28at.com

起初,ESLint 要想與 JSHint 合理競爭,就必須確保 ESLint 具備所有 JSHint 規則的等效功能。盡管 ESLint 的優勢在于自定義規則,但如果每個人都需要重新創建 JSHint 規則,ESLint 就可能無法得到廣泛采用。因此,最初的計劃是提供幾十個核心規則,將其余規則作為插件實現。ciu28資訊網——每日最新資訊28at.com

隨著時間的推移,ESLint 收到越來越多的請求,希望將格式和風格規則納入核心功能。許多請求都提到,他們不想使用兩個工具(ESLint 和 JSCS)來處理代碼,如果 ESLint 能夠實現 JSCS 的所有功能,他們可以放棄 JSCS,只使用 ESLint。因此,ESLint 團隊專注于實現功能的平衡,以滿足這種需求。最終,取得了巨大成功,JSCS 的使用量下降,并將其合并到了 ESLint 中。ciu28資訊網——每日最新資訊28at.com

當時,ESlint 團隊并沒有意識到 JSHint 的想法(棄用代碼風格規則)是正確的,盡管 ESLint 已經成為 JavaScript 的主導代碼規范工具。ciu28資訊網——每日最新資訊28at.com

JavaScript 的爆炸式增長和維護負擔

在接下來的幾年里,尤其是在 ECMAScript 6 和 React 發展的推動下,編寫 JavaScript 的方式發生了巨大的變化。Airbnb 和 Standard 等越來越流行的風格指南鼓勵 JavaScript 開發人員更具體地了解他們的代碼是如何編寫的。因此,ESLint 收到了大量關于格式化規則的例外和選項的請求。在過去的十年中,出現了各種奇怪的代碼風格,并伴隨著對將它們強制應用于 ESLint 核心規則的請求。每當引入新的語法時,ESlint 團隊都會收到一系列請求,要求更新現有規則并實施新規則。ciu28資訊網——每日最新資訊28at.com

當 ESlint 的核心規則接近 300 條時,ESlint 團隊試圖通過凍結風格規則來減輕維護負擔,這樣就不再追蹤極端情況來支持每個人的個人偏好。這在一定程度上有所幫助,但還不夠:ciu28資訊網——每日最新資訊28at.com

  • 規則沖突:用戶期望核心規則能夠很好地配合,這意味著任何兩個規則都不應標記相同的問題,任何兩個核心規則也不應該給出相互沖突的建議。雖然當核心規則少于 30 條時,這很容易實現,但當規則超過 300 條時,實現這一點就變得很困難,甚至不可能。
  • 不切實際的期望:有了大量的核心格式規則,用戶希望可以僅通過核心規則而不涉及插件就能實現所有可能的代碼風格指南。這給團隊增加了更多壓力,要求不斷添加選項,這也增加了核心的大小。
  • 努力與價值不匹配:持續添加新選項和例外以支持所有人的代碼風格指南的維護負擔落在了 ESLint 團隊身上,而價值只被少數用戶獲得。
  • 缺乏興趣:雖然 ESLint 受益于外部貢獻,但這些貢獻者對一些邊緣情況并不感興趣。ESLint 團隊將這些規則的優先級設得比其他工作低得多,這經常導致問題長期未被解決。
  • 一致性問題:由于 ESLint 的規則被設計為原子性規則,沒有訪問其他規則的能力,因此會遇到無法正確修復錯誤的問題,因為所需信息在另一個規則中。例如,如果自動修復需要添加一行新代碼,它需要知道文件的縮進方式才能應用正確的修復方法。然而,縮進規則控制 ESLint 的縮進,這意味著其他規則需要在沒有縮進的情況下應用修復,然后相信縮進規則會在后續的處理中修復縮進問題。

所有這些問題隨著 ESLint 的發展而不斷增加,現在 ESlint 終究是到了一個無法跟上這些問題的地步。ciu28資訊網——每日最新資訊28at.com

解決方案

推薦使用源代碼格式化工具而不是 ESLint 來對代碼進行格式化。源代碼格式化程序旨在理解整個文件并在整個文件中應用一致的格式。推薦以下兩個格式化工具:ciu28資訊網——每日最新資訊28at.com

  • Prettier:基于 JavaScript 的格式化程序,支持格式化多種語言;
  • dprint:基于 Rust 的格式化程序,支持較少的語言。

如果不想用專門的格式化工具,可以使用 @stylistic/eslint-plugin-js(針對JavaScript)或 @stylistic/eslint-plugin-ts(針對TypeScript)。這些包分別包含ESLint核心和 typescript-eslint 中的被棄用的格式化規則,這些規則會繼續維護。ciu28資訊網——每日最新資訊28at.com

已棄用的規則

以下列表包含 v8.53.0 中將棄用的所有規則:ciu28資訊網——每日最新資訊28at.com

  • array-bracket-newline
  • array-bracket-spacing
  • array-element-newline
  • arrow-parens
  • arrow-spacing
  • block-spacing
  • brace-style
  • comma-dangle
  • comma-spacing
  • comma-style
  • computed-property-spacing
  • dot-location
  • eol-last
  • func-call-spacing
  • function-call-argument-newline
  • function-paren-newline
  • generator-star-spacing
  • implicit-arrow-linebreak
  • indent
  • jsx-quotes
  • key-spacing
  • keyword-spacing
  • linebreak-style
  • lines-between-class-members
  • lines-around-comment
  • max-len
  • max-statements-per-line
  • multiline-ternary
  • new-parens
  • newline-per-chained-call
  • no-confusing-arrow
  • no-extra-parens
  • no-extra-semi
  • no-floating-decimal
  • no-mixed-operators
  • no-mixed-spaces-and-tabs
  • no-multi-spaces
  • no-multiple-empty-lines
  • no-tabs
  • no-trailing-spaces
  • no-whitespace-before-property
  • nonblock-statement-body-position
  • object-curly-newline
  • object-curly-spacing
  • object-property-newline
  • one-var-declaration-per-line
  • operator-linebreak
  • padded-blocks
  • padding-line-between-statements
  • quote-props
  • quotes
  • rest-spread-spacing
  • semi
  • semi-spacing
  • semi-style
  • space-before-blocks
  • space-before-function-paren
  • space-in-parens
  • space-infix-ops
  • space-unary-ops
  • spaced-comment
  • switch-colon-spacing
  • template-curly-spacing
  • template-tag-spacing
  • wrap-iife
  • wrap-regex
  • yield-star-spacing

這些規則將在下一個版本中被棄用,但在至少 ESLint v10.0.0 之前不會被移除。仍然可以使用它們,但在 ESLint CLI 中可能會看到看用警告。ciu28資訊網——每日最新資訊28at.com

參考:https://eslint.org/blog/2023/10/deprecating-formatting-rules/ciu28資訊網——每日最新資訊28at.com

本文鏈接:http://www.tebozhan.com/showinfo-26-16028-0.htmlESlint 終于把這個大麻煩解決了!

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: Go的異步編程:使用Futures與Promises

下一篇: REST API設計模式和反模式

標簽:
  • 熱門焦點
Top