ESLintはv8.53.0でフォーマッタ規則を廃止(deprecated)している。
本記事では、その経緯と代替ツールについて記述する。
(昔はESLintのフォーマット規則とPrettierが競合する問題があったが、これで解決か)
何があったか?
経緯がこちらの記事に詳しく書かれている。
簡単に言うと、JavaScriptが多様化・巨大化したことで要望が続き、疲弊してしまった、ということらしい。
(意訳)
ECMAScript6とReactの登場でJavaScriptの書き方が劇的に変わったのに加え、AirbnbやStandardは特定の書き方をJavaScript開発者に勧めるようになった。
結果として、フォーマット規則について例外やオプション対応の要望が押し寄せるようになった。
…
規則を凍結し、重荷を減らすことも試みたが焼石に水だった (コア部には300もの規則がある)
今後も以下のような問題が続いて大きくなるので、止めざるを得ないという結論に至った。https://eslint.org/blog/2023/10/deprecating-formatting-rules/
- 300の規則が衝突なく動作するように気を配り、
- コア部だけであらゆるスタイルに対応するという非現実的な期待に応えたり、
- 少数ユーザの為に費用対効果が低いことをやったり、
- 多くのユーザの為になることをやる時間がなくなった
- …などなど
代替ツール
ESLintは、自身のフォーマッタ機能の代替として以下のツールを推奨している。
- Prettier…JavaScriptベースのフォーマッタで多くの言語のフォーマットをサポートしている
- dprint…Rustベースのフォーマッタで少ないがいくつかの言語のフォーマットをサポートしている
- @stylistic/eslint-plugin-js…廃止になった、JavaScriptのフォーマット規則を含んでいる (別パッケージとしてメンテされる)
- @stylistic/eslint-plugin-ts…廃止になった、TypeScriptのフォーマット規則を含んでいる (別パッケージとしてメンテされる)
時代の流れに乗るなら、Prettierかdprint任せにする。今までと同様の規則を使用したいなら、@stylistic/eslint-plugin-jsや@stylistic/eslint-plugin-tsを導入、といったところだろうか。
参考
廃止になった規則一覧
https://eslint.org/docs/latest/rules/#deprecated
フォーマッタ規則廃止の経緯
https://eslint.org/blog/2023/10/deprecating-formatting-rules/

