Prettier 3.0 に含まれる予定の変更を紹介します
2022年の sosukesuzuki 1人アドベントカレンダー 12 日目です。
ブログを毎日書くというのは、想像以上に大変なんだなあと思い始めています。そろそろ折り返しなのでこのまま頑張ろうと思います。
本日のテーマは Prettier 3.0 です。
Prettier の現在の最新バージョンは 2.8.1 で、そろそろ 3.0 をリリースしたいと考えています。
もともと計画していた変更のほとんどは、すでに next
ブランチに取り込まれていて、現在は細かい調整をしている段階です。
そこで、ちょっと早いですが Prettier 3.0 に含まれる予定の変更のうち重要なものをここで紹介します。
Markdown のフォーマットにおいてラテン文字と日本語の文字の間にスペースが入らなくなる
長いこと待ち望まれていた機能だと思います。
私はJavaScriptが好きです
が 私は JavaScript が好きです
というようにスペースが入ってしまう問題が、ついに修正されます。
これは私ではない日本のコントリビューターが一年以上かけて修正してくれました。
プラグインの非同期パーサーをサポート
これは一般のユーザーには関係のない機能です。
プラグインのパーサーが Promise を返せるようになります。prettier-plugin-astro や prettier-plugin-ruby はこの機能がほしかったみたいです。
設定ファイルが ECMAScript Modules で書けるように
.prettierrc.js
とか、設定ファイルを JS で書くときに CommonJS ではなく ESM で書けるようになります。
trailingComma
のデフォルト値が all
に
IE のサポート終了を受けて、trailingComma
オプションのデフォルト値を es5
から all
に変更します。
Node.js 10 と 12 のサポートを切ります
最低でも Node.js 14 が必要になります。
公開 API が非同期になります
prettier.format
などの公開 API が Promise を返すようになります。
同期版を使い続けたい場合は @prettier/sync
を使うことができます。
プラグインを ECMAScript Modules で書けるようになります
プラグインのロードに require
ではなく import
を使うようになったので、プラグインを ESM で書けるようになります。
まとめ
Prettier をただコードフォーマッターとして使っているユーザーからしたら大した事のない変更が多いと思います。
ただ、内部的にはソースコードが ECMAScript Modules で書かれるようになったりビルドスクリプトが爆速になっていたりして結構便利なので、できるだけはやめに main
にマージしてリリースしたいところです。
進捗は https://github.com/prettier/prettier/issues/13142 で確認できます。
また、実は alpha 版がすでにリリースされているので気になる人は使ってみてください( https://github.com/prettier/prettier/releases/tag/3.0.0-alpha.4 )。