v9にバージョンアップするには設定ファイルを書き換えなければならないので、v8に固定(typescriptも依存している為、v5.3に)していました。
レガシー設定(.eslintrc)がいずれサポート外になるので、早めにフラット設定(eslint.config)にしておいた方が良い。
@nuxt/eslintはおすすめ設定がされているが、レガシー設定に対応していない。
という事で、@nuxt/eslintを導入して、フラット設定に書き換えてみました。

バージョンアップ

% yarn upgrade --latest

package.jsonが書き換わる(固定にしてたのから)

-    "eslint": "<9.0.0",
+    "eslint": "9.17.0",

-    "typescript": "<5.4.0",
+    "typescript": "5.7.2",

lintは想定通りエラーになるが、後で対応するので放置。

% yarn lint
$ eslint --ext ".js,.ts,.vue" --ignore-path .gitignore .
Invalid option '--ext' - perhaps you meant '-c'?
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.
error Command failed with exit code 2.
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.

@nuxt/eslint導入

ESLint Module - Nuxt ESLint

% npx nuxi module add eslint
  or
% yarn add -D @nuxt/eslint eslint typescript

nuxt.config.ts

  modules: [
+   '@nuxt/eslint',
    '@nuxtjs/i18n',

package.json

-    "lint": "eslint --ext \".js,.ts,.vue\" --ignore-path .gitignore .",
-    "lint:fix": "yarn lint --fix",
+    "lint": "eslint",
+    "lint:fix": "eslint --fix",
-    "eslint": "eslint",
-    "eslint:fix": "eslint --fix",

eslintはファイル指定用に定義してましたが、不要になった(lintの方で行けるようになった)ので削除しました。

.eslintrc.js → eslint.config.mjs

- module.exports = {
-   root: true,
-   env: {
-     browser: true,
-     es2021: true,
-     node: true
-   },
-   extends: [
-     '@nuxtjs/eslint-config-typescript',
-     'plugin:nuxt/recommended',
-     'plugin:vue/vue3-recommended',
-     'plugin:vue/base',
-     'plugin:vuetify/base'
-   ],
-   plugins: [
-   ],
-   // add your custom rules here
-   rules: {
-     'vue/max-attributes-per-line': 'off',
-     'vue/singleline-html-element-content-newline': 'off',
-     'vue/multi-word-component-names': 'off',
-     'vue/no-reserved-component-names': 'off',
-     'vue/no-multiple-template-root': 'off',
-     'no-lonely-if': 'off'
-   }
- }
+ import withNuxt from './.nuxt/eslint.config.mjs' // https://eslint.nuxt.com/packages/module
+ import vuetify from 'eslint-plugin-vuetify' // https://github.com/vuetifyjs/eslint-plugin-vuetify
+ 
+ export default withNuxt(
+   vuetify.configs['flat/base'],
+   {
+     rules: {
+       'vue/max-attributes-per-line': 'off',
+       'vue/singleline-html-element-content-newline': 'off',
+       'vue/multi-word-component-names': 'off',
+       'vue/no-reserved-component-names': 'off',
+       'vue/no-multiple-template-root': 'off',
+       'no-lonely-if': 'off',
+       '@typescript-eslint/no-explicit-any': 'off',
+       'no-console': 'error',
+       'no-throw-literal': 'error'
+     }
+   }
+ )

rootは廃止、envは不要、extendsの書き方も変わっています。
vuetify以外のextendsは、@nuxt/eslintに含まれている。
rulesの下3つは挙動が変わったので、追加しています。

package.json

下記は不要になったので削除

-    "@nuxtjs/eslint-config-typescript": "^12.1.0",
-    "eslint-plugin-nuxt": "^4.0.0",

lint修正

% yarn lint
$ eslint

  2:1  warning  Unused eslint-disable directive (no problems were reported from 'import/namespace')
  1:1  warning  Unused eslint-disable directive (no problems were reported from 'import/named')

下記のルールは追加せずにコメントを削除する事にしました。

- // eslint-disable-next-line import/named
- // eslint-disable-next-line import/namespace

今回のコミット内容

origin バージョンアップ: eslint, typescript, その他Package

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です