Nuxt3にESLintを導入する手順をまとめました。Flat ConfigとStylisticを使ってVSCodeでの保存時にフォーマットされるように設定しています。
Nuxt ESLintの導入
基本的には公式ページで説明されている手順で導入していきます。
まずは下記のコマンドで @nuxt/eslint
モジュールを導入します。
npx nuxi module add eslint
nuxt.config.ts
の設定
npxコマンドからNuxt ESLintを導入すると、 nuxt.config.ts
に下記のコードが自動で追加されます。
export default defineNuxtConfig({
modules: [
"@nuxt/eslint",
],
})
eslint.config.mjs
の設定
npxコマンドからNuxt ESLintを導入すると、 eslint.config.mjs
が自動で生成されます。
// @ts-check
import withNuxt from './.nuxt/eslint.config.mjs'
export default withNuxt(
// Your custom configs here
)
VSCodeの settings.json
の設定
VSCodeで保存時に自動フォーマットされるようにするため、 .vsocode/settings.json
に下記のコードを追加します。
{
// ...,
"editor.codeActionsOnSave": {
"source.fixAll.eslint": "explicit",
// Required in vscode-eslint < v3.0.10 only
// "eslint.useFlatConfig": true
},
}
"eslint.useFlatConfig": true
はESLintの拡張機能が古いバージョンを使っている場合に必要。
ESLintがうまく動かない
上記の手順で公式の手順によると問題なく動作するはずなのですが、自分の環境ではうまく動きませんでした。
あまりここに時間を費やしたくないので、下記のコードを手動で追加。
// @ts-check
import withNuxt from "./.nuxt/eslint.config.mjs";
import js from "@eslint/js";
import vue from "eslint-plugin-vue";
import stylistic from "@stylistic/eslint-plugin";
export default withNuxt([
js.configs.recommended,
...vue.configs["flat/recommended"],
{
plugins: {
stylistic,
},
rules: {
"stylistic/semi": ["error", "always"],
"stylistic/quotes": ["error", "double"],
"stylistic/indent": ["error", "tab"],
"stylistic/no-multiple-empty-lines": ["error", { "max": 1 }],
"stylistic/comma-spacing": ["error", { before: false, after: true }],
"stylistic/space-in-parens": ["error", "never"],
"stylistic/space-infix-ops": ["error", { int32Hint: false }],
"stylistic/object-curly-spacing": ["error", "always"]
},
},
{
languageOptions: {
globals: {
defineNuxtConfig: "readonly",
},
},
rules:{
"vue/multi-word-component-names": "off",
"vue/html-indent": [2, "tab"],
}
},
]);
ひとまず、上記の設定を追加することでエラーの検知と、VSCodeでの保存時に自動でフォーマットされるようになりました。
残課題
とりあえずESLintでフォーマットできるようになりましたが、本来の使い方と異なっていると思うので、時間がある時に改めて修正しようと思います。