Featured image of post nuxt/eslint-configからESLint Moduleへ移行したときの手順メモ

nuxt/eslint-configからESLint Moduleへ移行したときの手順メモ

これはなに Link to this heading

@nuxt/eslint-configを用いたeslintrcの設定から、ESLint Module@nuxt/eslint)を用いたESLint flat configへ移行したときに取った手順のメモ。

手順 Link to this heading

1. .eslintrc.cjs.eslintignoreを削除する Link to this heading

Flat configでは.eslintrc.cjsでなくeslint.config.mjsを使う。そのため、.eslintrc.cjsは削除する。

Flat configでは.eslintignoreは廃止され、無視するファイルもeslint.config.jsに記述する。そのため、.eslintignoreも削除する。

2. package.jsonから、ESLint関連のライブラリを削除する Link to this heading

@nuxt/eslint-configeslintを削除する。

eslint-config-prettierを入れている場合は、これも削除する。@nuxt/eslintモジュールは、デフォルトではフォーマットを実行しないため、Prettierなど別のフォーマッタを使う場合でも競合を起こさない。

3. @nuxt/eslintモジュールをプロジェクトに追加する Link to this heading

下記コマンドで@nuxt/eslinteslintを入れる。

npm install --save-dev @nuxt/eslint eslint

nuxt.config.ts@nuxt/eslintモジュールを追加する。

nuxt.config.ts
// https://nuxt.com/docs/api/configuration/nuxt-config
export default defineNuxtConfig({
  // ...
  modules: [
    "@nuxtjs/tailwindcss",
    "@nuxtjs/color-mode",
    "@nuxtjs/i18n",
+   "@nuxt/eslint",
  ],
});

この状態で一度アプリを起動する。

npm run dev

すると、自動でeslint.config.mjsが生成される。

eslint.config.mjs
// @ts-check
import withNuxt from './.nuxt/eslint.config.mjs'

export default withNuxt(
  // Your custom configs here
)

これでESLintが有効になる。 eslint.config.mjsを編集することで独自のルールを設けられる。

eslint.config.mjsを編集してルールを追加する Link to this heading

eslint.config.mjsを編集することで、ルールを追加できる。例を次に示す。

eslint.config.mjs
// @ts-check
import withNuxt from './.nuxt/eslint.config.mjs'

export default withNuxt(
  {
    files: ['**/*.vue', '**/*.ts'],
    rules: {
      'no-console': 'warn',
      '@typescript-eslint/no-explicit-any': 'error',
      '@typescript-eslint/no-unused-vars': 'error',
      '@typescript-eslint/typedef': 'error',
    },
  },
  {
    files: ['**/*.vue'],
    ignores: ['pages/**/*.vue', 'layouts/**/*.vue'],
    rules: {
      'vue/multi-word-component-names': 'error',
    },
  },
  {
    files: ['**/*.vue'],
    rules: {
      'vue/no-multiple-template-root': 'error',
      'vue/require-v-for-key': 'error',
      'vue/no-use-v-if-with-v-for': 'error',
      'vue/no-v-html': 'error',
      'vue/require-default-prop': 'error',
    },
  },
)

.gitignoreに書かれたファイルを無視する Link to this heading

.eslintrcを利用していた場合は、--ignore-path .gitignoreオプションで、.gitignoreファイルに書かれたファイルを無視できた。しかし、このオプションはESLint flat configには存在しないため、別途設定が必要になる。

.gitignoreを追加する設定は公式に記載されている。

Ignore Files - ESLint - Pluggable JavaScript Linter image

Ignore Files - ESLint - Pluggable JavaScript Linter

eslint.org favicon image eslint.org

下記の記述は上記サイトのコードをそのまま引用したものである。

eslint.config.mjs
// eslint.config.js
import { includeIgnoreFile } from "@eslint/compat";
import path from "node:path";
import { fileURLToPath } from "node:url";

const __filename = fileURLToPath(import.meta.url);
const __dirname = path.dirname(__filename);
const gitignorePath = path.resolve(__dirname, ".gitignore");

export default [
    includeIgnoreFile(gitignorePath),
    {
        // your overrides
    }
];

これをそのままeslint.config.mjsに追加すれば動作する。

なお、@eslint/compatnpmでインストールする必要がある。

npm install @eslint/compat -D

Appendix | ESLint Stylisticを有効にする Link to this heading

@nuxt/eslintモジュールは、デフォルトではフォーマットを実行しない。そのため、Prettierなど別のフォーマッタを使う場合は特に追加の設定は必要ない。

ESLintにはESLint Stylisticという機能があり、これを有効にすると、ESLintがフォーマットを実行する。

ESLint Stylisticは、nuxt.config.tseslintモジュールのオプションで、config.stylistictrueに設定すると有効化できる。

nuxt.config.ts
export default defineNuxtConfig({
  // ...
  eslint: {
    config: {
      stylistic: true,
    },
  },
});

ルールをカスタマイズする場合は、stylisticオプションにルールを追加する。

参考文献・URL Link to this heading

ESLint Module - Nuxt ESLint image

ESLint Module - Nuxt ESLint

All-in-one ESLint integration for Nuxt. It generates a project-aware ESLint flat config and provides the ability to optionally run ESLint check along side the dev server.

eslint.nuxt.com favicon image eslint.nuxt.com
【Nuxt3】簡単!@nuxt/eslintを使ったESLintとフォーマッタの設定 ※2024年版 - Qiita image

【Nuxt3】簡単!@nuxt/eslintを使ったESLintとフォーマッタの設定 ※2024年版 - Qiita

閲覧頂き、ありがとうございます🙇 この記事は @nuxt/eslint を用いた、 ESLint と フォーマッタ の導入環境を作成していきます! 前提 name version Nuxt.js(Vue.js) v3.x ESLint v8.x ...

qiita.com favicon image qiita.com
Nuxt3で「eslintrcとprettier」から「flat configとeslint stylistic」へ移行した話 image

Nuxt3で「eslintrcとprettier」から「flat configとeslint stylistic」へ移行した話

zenn.dev favicon image zenn.dev
Flat Config導入完了! 新しいESLintの設定フォーマットを使ってみた image

Flat Config導入完了! 新しいESLintの設定フォーマットを使ってみた

zenn.dev favicon image zenn.dev
Licensed under CC BY-NC-SA 4.0
最終更新 2月 24, 2025
Hugo で構築されています。
テーマ StackJimmy によって設計されています。