😵‍💫

@wordpress/scriptsの.eslintrcをeslint.config.jsに置き換えてみるテスト

2024/05/22に公開

たまたまESLintについて調べていたときに、このような記事を見ました。

https://eslint.org/blog/2023/10/flat-config-rollout-plans/

eslintrc removed in ESLint v10.0.0

まじかよ!!!!というわけで、テストがてらいつものローカル環境の.eslintrceslint.config.jsに置き換えてみることにしました。

結論

結論から言うと、@wordpress/scriptsを用いてLintをしているのならまだ.eslintrcのままでよさそうです。というかeslint.config.jsが構成形式としてリストされていないので認識されてないような感じです。
関連するissueを見つけたので、興味のある方はどうぞ。

https://github.com/WordPress/gutenberg/issues/55499

別でESLintのパッケージをインストールして使う分には関係ないです。
わざわざ@wordpress/scriptsを使って諸々こなしているので、このためだけにESLintを入れるのは面倒が増えるだけだなあと思うので、私はとりあえず@wordpress/scriptsがサポートするまでは.eslintrcで使うと思います。
動向に引き続き注視していきます。

やってみたメモ

これより以下はやってみたメモです。どういう流れで結論に至ったのかの私の思考回路が丸見えになります。

https://developer.wordpress.org/block-editor/reference-guides/packages/packages-eslint-plugin/

WordPressの公式のドキュメントではまだeslint.config.jsには言及されてなさそう。

とりあえず書き方もなにもわからないのでESLintの公式ドキュメントを確認しつつ進めます。

https://eslint.org/docs/latest/extend/shareable-configs

シンプルに置き換えてみる

https://eslint.org/docs/latest/extend/shareable-configs#using-a-shareable-config

eslint.config.js
import recommended from '@wordpress/eslint-plugin/recommended';
export default [ ...recommended ];

まずはドキュメント通りに置き換えてみます。
これでwp-scripts lint-jsを走らせてみると

Invalid option '--eslintrc' - perhaps you meant '--ignore'?
You're using eslint.config.js, some command line flags are no longer available. Please see https://eslint.org/docs/latest/use/command-line-interface for details.

(訳)
無効なオプション '--eslintrc' - おそらく '--ignore' のことですね?
あなたが使っているeslint.config.jsでは、いくつかのコマンドラインフラグが使えなくなっています。詳しくは https://eslint.org/docs/latest/use/command-line-interface をご覧ください。

これはLintを実行してるコマンド側の問題っぽいですね。おそらくFlat configにまだ対応していないのでしょう。(対応してたらおそらく公式ドキュメントで書き方が出てるはずなので)

FlatCompatを使ってみる

https://eslint.org/docs/latest/use/configure/migration-guide#using-eslintrc-configs-in-flat-config

対応してないのであれば対応してない用の書き方をします。
ESLintのドキュメント通り、パッケージを追加でインストールします。

npm install @eslint/eslintrc --save-dev
eslint.config.js
import { FlatCompat } from '@eslint/eslintrc';
const compat = new FlatCompat();

export default [
	...compat.extends( 'plugin:@wordpress/eslint-plugin/recommended' ),
];

これで動くかチェックするため、またwp-scripts lint-jsを叩きます。

Invalid option '--eslintrc' - perhaps you meant '--ignore'?
You're using eslint.config.js, some command line flags are no longer available. Please see https://eslint.org/docs/latest/use/command-line-interface for details.

まあやっぱり同じエラーですね。ここで@wordpress/scriptsのファイルとissueを確認します。これを最初にやればよかった。

https://github.com/WordPress/gutenberg/blob/trunk/packages/scripts/scripts/lint-js.js

eslint.config.js……ないね…。

https://github.com/WordPress/gutenberg/issues/55499

サポート……してないね……。.eslintrceslint.config.jsも動かないんですけど!みたいな稀な状況でもないし、とりあえず.eslintrcのまま様子見でよさそうかな。(PR出すほどこのあたりの挙動理解できてないし…😭)

株式会社HAMWORKS

Discussion