sosukesuzuki.dev

2022年 sosukesuzuki 1人アドベントカレンダー

December, 02 2022

Prettier 2.8 はリリースしたくなかった

2022年の sosukesuzuki 1人アドベントカレンダー 2 日目です。

今日は軽めの話題で。

先日 Prettier 2.8 をリリースしました。

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 に取り込まれます。そうすると nextmain をマージする作業がそこそこの頻度で発生するのです。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 の話は別に書きます。