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's image

Ignore Files - ESLint - Pluggable JavaScript Linter

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's 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
【Nuxt3】簡単!@nuxt/eslintを使ったESLintとフォーマッタの設定 ※2024年版 - Qiita's image

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

閲覧頂き、ありがとうございます🙇この記事は @nuxt/eslint を用いた、ESLint と フォーマッタ の導入環境を作成していきます!前提経緯Nuxt3 に ESLint と Pr…

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

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

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

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

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