-
Notifications
You must be signed in to change notification settings - Fork 0
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
ESLint 8 から ESLint 9 の flat configに移行する #1343
Comments
下記から内容をまとめ直しの上転記 |
2024/10/11 時点create-vueがリリースされたので、内容を確認する flat config対応以外にvitest周りの変更もあるように見える。 2024/10/17時点flat config対応以外のトピックは下記。
1点目のパッケージ追加は、別々にやったほうが安全そう(後述)
よって、下記の順序、方針で対応する。 (1) 2024/10/18時点@vitest/eslint-pluginがESLint9前提なので、先にflat config対応をやる必要がある。
2024/10/21 時点flat configのサポート状況を一覧できる。 airbnb-typescriptは下記。 |
新旧の差分ファイル旧:3.10.4 新:3.11.1
差分全量
|
flat config関連
定義ファイル
package.json
.prettierrc.json
.editorconfig
flat config以外package.jsonに依存パッケージ追加
追加: VSCode周り
Cypress周り
URL修正
|
移行(作業記録、随時更新) マイグレーションガイド
メモ
手順マイグレーションツール適用マイグレーションツールが用意されていたが、
パッケージ.eslintrcから参照のあるパッケージについて、create-vueより古いものは一式アップデートする
prettierは3.3.3で変更なし。 -extオプションの廃止npmスクリプトで使用していた、対象のファイル拡張子を指定するための
--ignore-path オプションの廃止.gitignoreファイルから対象外ファイルを読み込む機能が廃止になった。
flat configの場合にモノレポ構成でルートから継承がうまくできないモジュールが見つからないエラーで実行できなくなってしまった。 下記のissueに詳しく書かれているが、下記のような設定ファイルは動作しない。
問題提起がされており、 対応するPRがマージされている。 しかし、まだexperimentalな機能で、v10でexperimentalではなくなるよう。 experimentalをあたまり使いたくないので、 airbnbのプラグインがまだflat configに対応していないissueは提起されていて、
ライバルだったgoogleのスタイルガイドも未対応の状態なので、よい代替先も見当たらない。 一旦FlatCompatで変換する。 fixupConfigRules
ESLintのAPIの破壊的変更により使えなくなったAPIをコールしているのが原因らしい。
プラグインのキーが重複する
@vue/eslint-config-airbnbが、 lintすると
|
ESLint Config Inspector |
移行前後の検証
|
aibnbのスタイルガイドがうまく動かない件状況整理現状のairbnbのスタイルガイド周りのパッケージがどうなっているか整理 アプリ
↓
⇒★これが最近public archiveになっている
↓ 展望
下記のパッケージを使うようメッセージが残されて廃止の状態。 こちらはflatconfigに対応済みのように見える。 |
flat configの場合にモノレポ構成でルートの共通設定ファイルからうまく継承できない原因対応案各ワークスペースに設定ファイルを置くこのパターンは共通化をあきらめているので動作する。 experimentalの機能
|
airbnbのスタイルガイドがうまく動かない原因プラグインのキーが重複する問題Legacy Configの場合、下記のようにリテラルでプラグイン名を指定するようになっている。 https://github.com/vuejs/eslint-config-airbnb/blob/adec897132845986de6ed8600acaa327626372aa/packages/eslint-config-airbnb/rules/template.js#L68 https://github.com/vuejs/eslint-config-airbnb/blob/main/packages/eslint-config-airbnb-with-typescript/index.js 一方で、 一方で、
不明点
そもそもflat configでもairbnbのスタイルガイドを継続して使えるかどうか
|
flat config前提でairbnbの対抗馬となるスタイルガイドを探すモチベーションcreate-vueのデフォルトの設定よりももっとチェックのルールを増やしたほうがよいという課題感がある。 |
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 系のリリースと思われる。
定期的な確認対象
下記のレポジトリのリリース状況を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対応済みのため先に対応される見込み。
2. typescript-eslintのrecommended-type-checked
現在はrecommendedを使用しているが、
型情報を利用するルールを追加で使用することで、チェックを強化することが可能。
https://github.com/vuejs/eslint-config-typescript?tab=readme-ov-file#linting-with-type-information
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対応が完了したら、この内容に追随する形でサンプルアプリとドキュメントの更新を行う。
完了条件
The text was updated successfully, but these errors were encountered: