Skip to content

ESLint 8 から ESLint 9 の flat configに移行する #1343

@KentaHizume

Description

@KentaHizume

2025/04/04 現在

air-bnb の ESLint 9 対応状況は以下にまとまっている。
main ブランチへの反映はまだ時間がかかりそう。

flat config への対応 Issue も Openの状態

eslint-config-standardはflat config に対応していない状態が引き続きであり、特に進捗なし。

create-vue に関しては ESLint 9 flat config に対応済み、以下の ようにv3.16.0 でflat config に関する設定方法が説明されている。

なお、oxlint に関しても導入を進めており、現時点では ESLint と oxlint を並行利用する形で実施されている?

2025/1/22 現在

一旦様子を見る方針で、
v 8 系 + @vue/eslint-config-airbnb-with-typescript を維持する。

[email protected] が ESlint + TypeScript に対応
https://github.com/vuejs/create-vue/releases/tag/v3.14.0

ただし、中身的にはeslint-config-standard-with-typescriptをextendsするのをやめているのでルールセットは異なる。
https://github.com/vuejs/eslint-config-standard/releases/tag/%40vue%2Feslint-config-standard-with-typescript%409.0.0

Vue固有の設定+typescript-eslintに含まれる設定が利用できる。
https://github.com/vuejs/eslint-config-typescript/tree/v14.3.0?tab=readme-ov-file#usage

create-vueすると、eslint.config.tsが生成され、デフォルトのルールは下記。

  pluginVue.configs['flat/essential'],
  vueTsConfigs.recommended,

なので、Vue固有のルール以外は下記が適用される。
https://typescript-eslint.io/users/configs/#recommended

つまり、移行前に現在の理由とデフォルトのルールを比較して過不足を確認する必要がある。
不足している場合、下記で用意されているものであればすぐに使用できる。
https://typescript-eslint.io/users/configs/

recommended-type-checked が有力と思われる。

2024/12/25 現在

JavaScript版のairbnbのスタイルガイドが引き続きflat configに対応中の状態。

eslint-config-standardはflat config に対応していない状態で、
別のパッケージを見てくださいというコメントがある。

googleのスタイルガイドは進んでいなさそう。

2024/12/19 現在

確認対象のVue用のスタイルガイドについて、前回の時点からの更新はない状態。

2024/10/22 現在

調査の結果、現時点では9系への移行を見送り、ESLint8系のまま止めておく。
見送る大きな理由として、現時点でうまく適用できるVue用のスタイルガイドがないので、
いまflat configに移行するとlintの機能が縮小してしまうことへの懸念が挙げられる。

8系はEOLを迎えてはいるが、各プラグインのflat configへの対応状況を見る限り、
まだ過渡期と思われ、8系を使っていても直ちに問題は発生しないと判断した。

次のターゲットは、2024年末~2025年初めの ESLint 10 系のリリースと思われる。

When ESLint v10.0.0 is released (end of 2024 or early 2025 in all likelihood), the eslintrc configuration system will be completely removed.
https://eslint.org/blog/2023/10/flat-config-rollout-plans/#eslintrc-removed-in-eslint-v10.0.0

定期的な確認対象

下記のレポジトリのリリース状況をwatchする。
どちらかがflat configに対応したら、適用可能か調査を再開する。
eslint-config-standard
eslint-config-airbnb

【詳細】うまく適用できるVue用のスタイルガイドがない

現在適用しているeslint-config-airbnb-typescriptが2024/8にアーカイブされてしまったので、
代わりになるスタイルガイドを適用する必要がある。

1. eslint-config-standard

Vue用のスタイルガイドとしてflat config版がサポートされる予定。
standardのほうはflat config対応済みのため先に対応される見込み。

Work on @vue/eslint-config-standard and @vue/eslint-config-airbnb. I can't guarantee a timeframe for these 2 projects, though. I will likely work on the standard config first because the upstream library has already shipped flag config support

2. typescript-eslintのrecommended-type-checked

現在はrecommendedを使用しているが、
型情報を利用するルールを追加で使用することで、チェックを強化することが可能。
https://github.com/vuejs/eslint-config-typescript?tab=readme-ov-file#linting-with-type-information

https://typescript-eslint.io/users/configs#recommended-type-checked
https://zenn.dev/cybozu_frontend/articles/ts-eslint-v6-guide

3. eslint-config-airbnb

typescript版はアーカイブされてしまったが、JS版はメンテナンスされている。

起票時

ES Lint 8 系が 2024/10/5 に EOL を迎えるため、ES Lint 9 に移行する。
ES Lint 9 では、config の形式に破壊的変更があり、
flat config という新しい形式の config に移行する必要がある。

create-vue のES Lint 9対応が完了したら、この内容に追随する形でサンプルアプリとドキュメントの更新を行う。

完了条件

  • ES Lint 9 系にアップデートし、 flat config へ移行した状態で問題なく静的コード解析が動作すること
  • create-vueで作成されるテンプレートと同期が取れていること
  • ドキュメントの関連個所が修正されていること

Metadata

Metadata

Assignees

Labels

target: Azure AD B2C AuthAzure AD B2C認証の要件別サンプル(コード)に関係があるtarget: DresscaサンプルアプリケーションDresscaに関係があるtarget: アーキテクチャ/CSRドキュメントのアプリケーションアーキテクチャ/クライアントサイドレンダリングに関係があるtarget: ガイド/AP開発手順ドキュメントのガイド/アプリケーション開発手順に関係がある定期的な確認が必要他のサービスの不具合亜解消待ちなど、定期的な情報のアップデートが必要である

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions