sosukesuzuki.dev

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

December, 12 2022

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 )。