オプションの理念
Prettierには歴史的な理由でいくつかのオプションがあります。しかし、これ以上追加することはありません。
詳細については、以下をお読みください。
Prettierは、コードをあなたが望むようにあらゆる方法で出力しようとする、何でも詰め込んだコードフォーマッターではありません。これは意見を強く持つフォーマッターです。なぜPrettier?のページから引用します。
Prettierを採用する最大の理由は、スタイルに関する終わりのない議論を止めることです。
しかし、Prettierのオプションが増えれば増えるほど、上記の目標からは遠ざかります。スタイルに関する議論が、どのPrettierオプションを使うべきかという議論に変わるだけです。フォーマット戦争は、新たな勢いで勃発します。「どのオプション値が良いのか?なぜ?私たちは正しい選択をしたのか?」
そして、オプションにはコストがかかるだけではありません。その欠点について詳しくは、設定の追加に抵抗する問題をご覧ください。これは、どのオプションリクエストよりも多くの👍が付いています。
では、なぜオプションがいくつかあるのでしょうか?
- Prettierの初期段階では、普及させるためにいくつか追加されました。🚀
- 「大きな需要」があったため、いくつか追加されました。🤔
- 互換性のために追加されたものもあります。👍
動機づけしやすいオプションには、以下のようなものがあります。
--trailing-comma es5
を使用すると、トランスパイルすることなく、ほとんどの環境で末尾のカンマを使用できます(関数の末尾のカンマはES2017で追加されました)。--prose-wrap
は、世の中にあるすべての奇妙なMarkdownレンダラーをサポートするために重要です。--html-whitespace-sensitivity
は、HTMLの不幸な空白ルールが原因で必要です。--end-of-line
は、チームがCRLFをgitリポジトリに入れないようにするのに役立ちます。--quote-props
は、Google Closure Compilerの高度な使用法で重要です。
しかし、他のオプションは後から考えると動機づけが難しいです:--arrow-parens
、--jsx-single-quote
、--bracket-same-line
、--no-bracket-spacing
は、私たちが持っていることを喜んでいないタイプのオプションです。それらはチーム内で多くの無駄な議論を引き起こし、申し訳なく思っています。削除が難しいこれらのオプションは、歴史的な遺物として存在しており、他のオプションを追加する動機にはならないはずです(「それらのオプションが存在するのに、なぜこれはダメなのか?」)。
長い間、議論を繰り広げ、フィードバックを集めるために、オプションリクエストをオープンにしていました。その間に学んだことは、需要を測るのが非常に難しいということです。Prettierの使用量は大幅に増加しました。当時「大きな需要」だったものは、今ではそれほどではありません。GitHubのリアクションやTwitterの投票は、代表的なものではなくなりました。すべての静かなユーザーはどうでしょう?「もう一つだけ」オプションを追加するのは簡単に見えました。しかし、どこで止めるべきだったのでしょうか?多すぎるのはいつでしょうか?「最後の一つ」のオプションを追加した後でも、常にissue trackerに「トップissue」が存在するでしょう。
しかし、止める時が来ました。Prettierが十分に成熟し、非常に多くの組織やプロジェクトで採用されているのを見て、調査段階は終わりました。Prettierがオプションのセットを「凍結」すべき地点に達したと結論付けるのに十分な自信があります。オプションリクエストはもう受け付けていません。この困難な道のりに参加してくれたすべての人に感謝します。
オプションリクエストはPrettierの範囲外であるため、議論なしにクローズされることに注意してください。入力フォーマットの要素(例:改行)を保持するリクエストも同様です。それは「実際の」オプションのすべての欠点を持つ偽装されたオプションに過ぎないからです。技術的な必要性(例:互換性)のためにオプションの追加が避けられない状況があるかもしれませんが、フォーマット関連のオプションについては、これが最終的な決定です。