これはなに
@nuxt/eslint-config
を用いたeslintrc
の設定から、ESLint Module
(@nuxt/eslint
)を用いたESLint flat config
へ移行したときに取った手順のメモ。
手順
1. .eslintrc.cjs
と.eslintignore
を削除する
Flat configでは.eslintrc.cjs
でなくeslint.config.mjs
を使う。そのため、.eslintrc.cjs
は削除する。
Flat configでは.eslintignore
は廃止され、無視するファイルもeslint.config.js
に記述する。そのため、.eslintignore
も削除する。
2. package.json
から、ESLint関連のライブラリを削除する
@nuxt/eslint-config
とeslint
を削除する。
eslint-config-prettier
を入れている場合は、これも削除する。@nuxt/eslint
モジュールは、デフォルトではフォーマットを実行しないため、Prettierなど別のフォーマッタを使う場合でも競合を起こさない。
3. @nuxt/eslint
モジュールをプロジェクトに追加する
下記コマンドで@nuxt/eslint
とeslint
を入れる。
npm install --save-dev @nuxt/eslint eslint
nuxt.config.ts
に@nuxt/eslint
モジュールを追加する。
// 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
が生成される。
// @ts-check
import withNuxt from './.nuxt/eslint.config.mjs'
export default withNuxt(
// Your custom configs here
)
これでESLintが有効になる。
eslint.config.mjs
を編集することで独自のルールを設けられる。
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
に書かれたファイルを無視する
.eslintrc
を利用していた場合は、--ignore-path .gitignore
オプションで、.gitignore
ファイルに書かれたファイルを無視できた。しかし、このオプションはESLint flat configには存在しないため、別途設定が必要になる。
.gitignore
を追加する設定は公式
に記載されている。
下記の記述は上記サイトのコードをそのまま引用したものである。
// 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/compat
はnpm
でインストールする必要がある。
npm install @eslint/compat -D
Appendix | ESLint Stylisticを有効にする
@nuxt/eslint
モジュールは、デフォルトではフォーマットを実行しない。そのため、Prettierなど別のフォーマッタを使う場合は特に追加の設定は必要ない。
ESLintにはESLint Stylistic
という機能があり、これを有効にすると、ESLintがフォーマットを実行する。
ESLint Stylisticは、nuxt.config.ts
のeslint
モジュールのオプションで、config.stylistic
をtrue
に設定すると有効化できる。
export default defineNuxtConfig({
// ...
eslint: {
config: {
stylistic: true,
},
},
});
ルールをカスタマイズする場合は、stylistic
オプションにルールを追加する。