選項哲學
由於歷史原因,Prettier 有一些選項。但我們不會再新增更多選項。
請繼續閱讀以了解更多資訊。
Prettier 不是一個試圖以任何您想要的方式列印程式碼的全方位程式碼格式化工具。它有自己的主張。 引用 為什麼要用 Prettier? 頁面:
到目前為止,採用 Prettier 的最大原因是停止所有關於程式碼風格的無休止爭論。
然而,Prettier 的選項越多,就越偏離上述目標。關於程式碼風格的爭論只會變成關於使用哪些 Prettier 選項的爭論。 格式化戰爭將以新的活力爆發:「哪些選項值更好?為什麼?我們做了正確的選擇嗎?」
而且這不是選項唯一的代價。要了解更多關於它們的缺點,請參閱 關於拒絕新增設定的議題,它獲得的 👍 比任何選項請求議題都多。
那麼為什麼 überhaupt 會有任何選項呢?
- 在 Prettier 的初期,為了讓它能夠順利起步,新增了一些選項。🚀
- 有幾個選項是在「強烈要求」後新增的。🤔
- 有些選項是為了相容性而新增的。👍
比較容易說明的選項包括:
--trailing-comma es5
讓您可以在大多數環境中使用尾隨逗號,而無需轉譯(尾隨函數逗號已在 ES2017 中新增)。--prose-wrap
對於支援各種特殊的 Markdown 渲染器非常重要。- 由於 HTML 不幸的空白規則,需要
--html-whitespace-sensitivity
。 --end-of-line
讓團隊更容易將 CRLF 擋在他們的 git 儲存庫之外。--quote-props
對於 Google Closure Compiler 的進階用法非常重要。
但事後看來,其他選項就比較難以說明了:--arrow-parens
、--jsx-single-quote
、--bracket-same-line
和 --no-bracket-spacing
不是我們樂見的選項類型。它們在團隊中造成很多 腳踏車棚效應 (Bike-shedding),我們對此感到抱歉。現在很難移除這些選項,它們的存在是一個歷史遺留問題,不應該成為新增更多選項的理由(「如果那些選項都存在,為什麼這個不能存在?」)。
很長一段時間以來,我們讓選項請求保持開放狀態,以便讓討論進行並收集意見回饋。這些年來,我們學到的是,衡量需求真的非常困難。Prettier 的使用量大幅增長。過去的「強烈要求」在今天已經不算什麼了。GitHub 的反應和 Twitter 的投票變得不具代表性。那麼所有沉默的使用者呢?新增「只有一個」選項看起來很容易。但我們應該在哪裡停止呢?什麼時候才算太多?即使在新增了「最後一個選項」之後,問題追蹤器中總是會有一個「最重要的議題」。
然而,停止的時候到了。現在 Prettier 已經足夠成熟,我們看到它被這麼多的組織和專案採用,研究階段已經結束。我們有足夠的信心得出結論,Prettier 已經達到了一個選項集應該「凍結」的程度。不再接受選項請求。 我們感謝所有參與這趟艱難旅程的人。
請注意,由於選項請求不在 Prettier 的範圍內,它們將在沒有討論的情況下被關閉。這同樣適用於保留輸入格式元素(例如:換行符號)的請求,因為這只不過是偽裝成選項,具有所有「真正」選項的缺點。由於技術必要性(例如:相容性),可能有些情況下無法避免新增選項,但對於與格式相關的選項,這是最終決定。