メインコンテンツへスキップ

オプションに関する考え方

非公式ベータ版翻訳

このページは PageTurner AI で翻訳されました(ベータ版)。プロジェクト公式の承認はありません。 エラーを見つけましたか? 問題を報告 →

情報

Prettierには歴史的経緯からいくつかのオプションがあります。しかし今後新たなオプションを追加することはありません。

詳細は続きをお読みください。

Prettierは、ユーザーが望むあらゆる方法でコードを出力しようとする万能型コードフォーマッターではありません。これは_意見が明確な_フォーマッターです。Prettierを選ぶ理由のページから引用します:

Prettierを採用する最大の理由は、スタイルに関する不毛な議論を完全に終わらせるためです。

しかしPrettierのオプションが増えれば増えるほど、この目標から遠ざかります。スタイルに関する議論が単に「どのPrettierオプションを使うべきか」という議論に置き換わるだけです。 新たな活力を得たフォーマット論争が勃発します:「どのオプション値が優れているのか?なぜか?私たちは正しい選択をしたのか?」

また、オプションがもたらすコストはこれだけではありません。オプションのデメリットについて詳しく知るには、設定追加への抵抗に関するイシューをご覧ください。このイシューは、オプション追加要請のどのイシューよりも多くの👍を集めています。

ではなぜオプションが存在するのでしょうか?

  • Prettierの初期段階で、とにかく普及させるためにいくつか追加されました。 🚀

  • 「強い要望」を受けて数点追加されました。 🤔

  • 互換性のために追加されたものもあります。 👍

導入理由が明確なオプションには以下があります:

  • --trailing-comma es5:トランスパイルなしでほとんどの環境で末尾カンマを使用可能にします(関数の末尾カンマはES2017で追加されました)。

  • --prose-wrap:世の中の様々なMarkdownレンダラーをサポートするために重要です。

  • --html-whitespace-sensitivity:HTMLの厄介な空白規則に対応するために必要です。

  • --end-of-line:チームがGitリポジトリからCRLFを排除しやすくします。

  • --quote-props:Google Closure Compilerの高度な使用において重要です。

しかし他のオプション(--arrow-parens--jsx-single-quote--bracket-same-line--no-bracket-spacing)の導入理由は後から考えると弱いものです。これらはチーム内で多くのバイクシェッディングを引き起こし、私たちはその点についてお詫びします。現在では削除が困難なこれらのオプションは歴史的な遺物として存在しており、新たなオプション追加の根拠(「_あの_オプションがあるなら、なぜこれがダメなのか?」)として利用されるべきではありません。

長い間、議論を展開させフィードバックを収集するため、オプション要請をオープンにしていました。この期間に学んだのは、需要を測ることが極めて困難だということです。Prettierの利用は大きく拡大しました。かつて「強い要望」とされたものも、今日ではそれほど重要ではありません。GitHubのリアクションやTwitterの投票は代表性を失いました。黙って利用しているユーザーはどうでしょうか?「あと1つだけ」オプションを追加することは簡単に見えました。しかしどこで止めるべきだったのでしょう?いつ追加しすぎになるのでしょう?「最後の1つ」を追加した後でも、イシュートラッカーには常に「トップのイシュー」が残るでしょう。

しかし、止める時が来ました。Prettierが十分に成熟し、多くの組織やプロジェクトで採用されている今、研究段階は終了です。私たちはオプションセットを「凍結」すべき時点に到達したと確信しています。オプション要請は今後一切受け付けません。 この困難な旅に参加してくださったすべての方々に感謝します。

オプション要請はPrettierの対象外となるため、議論なしにクローズされることにご注意ください。入力フォーマットの要素(例:改行)を保持する要請も同様です。これは「本物の」オプションと同様の欠点を持つ偽装オプションに他なりません。技術的必要性(例:互換性)からオプション追加が避けられない状況はあり得ますが、フォーマット関連のオプションについてはこれが最終決定です。