Prettier 2.8 はリリースしたくなかった
2022年の sosukesuzuki 1人アドベントカレンダー 2 日目です。
今日は軽めの話題で。
先日 Prettier 2.8 をリリースしました。
We just released Prettier 2.8. This release includes support for TypeScript 4.9 satisfies operator and improvements to the --cache CLI option!https://t.co/Yfs7Pd5MsD
— Prettier (@PrettierCode) November 23, 2022
TypeScript 4.9 で追加された satisfies
演算子 のサポートや --cache
オプションの改善が含まれていて、人によっては嬉しいんじゃないかと思います。
この Prettier 2.8 ですが、実はリリースするつもりはありませんでした。
というのも、本当は Prettier 2.7 を最後の 2.x にして 3.0 をリリースするつもりだったのです。
Prettier 3.0 はユーザーへの直接的な影響のある変更も多く含まれる予定ですが、なにより Prettier メンテナーにとって重要な変更が多く含まれています。たとえばソースコードが CommonJS で書かれていたものが ECMAScript Modules で書かれるようになったり、ビルドスクリプトの実行時間が 1/3 くらいに短縮されていたり、色々とメンテナーにとって便利になっています。
また、Prettier 3.0 は現在 next
ブランチ で開発されていて、新しい変更は特別な理由がなければ基本的に next
ブランチに取り込まれるようになっています。でも外部のコントリビューターからの PR や、特別な理由がある PR は main
に取り込まれます。そうすると next
に main
をマージする作業がそこそこの頻度で発生するのです。main
にマージした PR によってはそのマージ作業は非常にめんどうくさいものなります。
とかそんな理由があるので Prettier のメンテナー的にはできるだけはやく 3.0 をリリースしてしまいたかったのです。
なので 2.7 を最後の 2.x にして 3.0 をリリースしようと思っていました。
がしかし、TypeScript 4.9 がリリースされてしまいました。TypeScript 4.9 には satisfies
演算子という新しい構文が実装されるので、当然 Prettier はその対応をしなければいけません。そして、その対応は Prettier 3.0 ではなく 2.8 としてリリースしたほうが良いのではないかという話になりました。
なぜなら、3.0 で TypeScript 4.9 の satisfies
に対応すると、ただ satisfies
を使いたいというだけの理由でユーザーは Prettier のメジャーバージョンを上げなくてはいけなくなるからです。
メンテナーの気持ちとしては TypeScript 4.9 のためだけに Prettier 2.8 を出すのはめんどくさいのでさっさとまとめて 3.0 を出してしまいたい気持ちでしたが、仕方なく 2.8 をリリースしました(3.0 のリリースにはまだもう少し時間がかかりそうだったという事情もあります)。
Prettier 2.9 はリリースしなくて済むように頑張ろうと思います。
Prettier 3.0 の話は別に書きます。