前提
以下のESLint Pluginを使用している場合に起こる問題を解決します。
srcDir
がsrc
という名前で設定されている事を前提にしています。
違ったら該当場所を補完して下さい。
コンポーネントタグ名が勝手にパスカルケースになるのを防ぐ
Nuxt.jsが提供するコンポーネント(以下の4個)はケバブケース1にしないとビルドに失敗します。[要検証]
エディターの拡張機能でESLintを入れてると保存時に勝手にパスカルケース2に修正される場合があるので、これらのタグが修正されないように設定しましょう。
{
"rules": {
"vue/component-name-in-template-casing": [
"error",
"PascalCase",
{
"ignores": ["nuxt", "nuxt-link", "nuxt-child", "no-ssr"]
}
]
}
}
エイリアスのパスを解釈させる
eslint-plugin-importを使用してる場合のみ
Nuxt.jsには、エイリアス(別名)という相対ルートパス的な事ができる機能があります。
例えば下記のコードは./src/components/Foobar.vue
のように解釈されます。
import Foobar from "~/components/FooBar.vue";
しかしながら、ESLint側は@
/~
が何を指しているか知らない為、import/unresolved3に引っかかって警告が出ます。
解決法
これを解決するために、eslint-import-resolver-babel-moduleを利用します。
npm install eslint-import-resolver-babel-module babel-plugin-module-resolver --save-dev
yarn add eslint-import-resolver-babel-module babel-plugin-module-resolver -D
(この際、babel-plugin-module-resolver
も同時にインストールしておく必要があります)
そして、.eslintrc
にこの様に追記します。
{
"settings": {
"import/resolver": {
"babel-module": {
"root": ".",
"alias": {
"~": "./src",
"@": "./src",
"~~": ".",
"@@": "."
}
}
}
}
}
これで警告が出ることが無くなるでしょう。
余談:VSCodeでエイリアスを解釈したパス候補を表示させる
VSCodeにはPath Autocompleteという拡張機能が存在していますが、コンフィグに追記すると下の画像のようにエイリアスを解釈させることも出来ます。
{
"path-autocomplete.pathMappings": {
"~": "${folder}/src",
"@": "${folder}/src",
"~~": "${folder}",
"@@": "${folder}"
}
}
あとがき
手前味噌で、eslint-config-fornuxtという共用コンフィグを作っています。
継承するなどしてお使い下さい。
以下の特徴があります。
- 本記事での問題を解決
-
eslint:recommended
、plugin:vue/recommended
、prettier/vue
を継承しています。 -
plugin:vue/recommended
で欠けているものをeslint:recommended
にあればそちらに準拠、無かったら適当に設定。
その他はソースコードを見て下さい。