参考)ほとんどこれです。ありがとうございました。
LaravelにESLintとPrettierを導入する時にやったことの全て
必要なモジュールインストール
$ npm install babel-eslint eslint eslint-config-prettier eslint-config-standard eslint-friendly-formatter eslint-loader eslint-plugin-html eslint-plugin-import eslint-plugin-jsx-a11y eslint-plugin-node eslint-plugin-prettier eslint-plugin-promise eslint-plugin-standard eslint-plugin-vue laravel-mix-eslint --save-dev
laravelのプロジェクトディレクトリ直下に .eslintrc.jsを作成する
$ cd <Laravelプロジェクト>
$ vi .eslintrc.js
参考サイトで紹介されている内容は以下のようになります。
module.exports = {
root: true,
parserOptions: {
parser: 'babel-eslint',
},
env: {
browser: true,
},
extends: [
'standard',
'plugin:vue/recommended',
'plugin:prettier/recommended',
'prettier/vue',
],
plugins: [
'vue',
'prettier', // prettierをESLintと併用します
],
rules: {
// ESLintが使用する整形ルールのうち、自分がoffにしたいルールなどを指定する
'vue/no-v-html': 'off', // v-htmlの使用について
'vue/prop-name-casing': 'off', // Propsの変数の命名規則について
'no-console': 'off', // console.log()の使用について
'no-unused-vars': 'off', // 使われていない変数について
'camelcase': 'off', // camelcaseについて
// この先はPrettierのルール
"prettier/prettier": [
"error",
{
printWidth: 120,
tabWidth: 2,
useTabs: false,
singleQuote: true,
trailingComma: 'all',
bracketSpacing: true,
arrowParens: 'avoid',
semi: false,
},
]
}
}
次に、webpack.mix.jsを修正します。紹介されていた内容は以下の通りです。
const mix = require('laravel-mix')
/*
|--------------------------------------------------------------------------
| Mix Asset Management
|--------------------------------------------------------------------------
|
| Mix provides a clean, fluent API for defining some Webpack build steps
| for your Laravel application. By default, we are compiling the Sass
| file for the application as well as bundling up all the JS files.
|
*/
// ESLintに関する設定(この部分を丸ごと追記するイメージです)
if (!mix.inProduction()) { // 本番環境ではESLintは使用しない
mix.webpackConfig({
module: {
rules: [
{
enforce: 'pre',
exclude: /node_modules/,
loader: 'eslint-loader',
test: /\.(js|vue)?$/,
},
],
},
})
}
// watchするファイルやポート番号などに関する設定(今回の内容とは関係ありません)
mix
.js('resources/js/app.js', 'public/js')
.sass('resources/sass/app.scss', 'public/css')
.browserSync({ // browserSyncの設定
files: ['resources/js/**/*', 'resources/sass/**/*', 'resources/views/**/*', 'public/css/**/*'],
port: 3000,
ui: {
port: 3001,
},
proxy: 'localhost:8000', //php artisan serveで立ち上げた8000番をProxyする
})
// 本番環境ではバージョン付けによるキャッシュ対策を施す(今回の内容とは関係ありません)
if (mix.inProduction()) {
mix.version()
}
私の揮発環境では、browserSyncは利用していないので、削除しました。
const mix = require('laravel-mix');
/*
|--------------------------------------------------------------------------
| Mix Asset Management
|--------------------------------------------------------------------------
|
| Mix provides a clean, fluent API for defining some Webpack build steps
| for your Laravel application. By default, we are compiling the Sass
| file for the application as well as bundling up all the JS files.
|
*/
if (!mix.inProduction()) {
mix.webpackConfig({
module: {
rules: [
{
enforce: 'pre',
exclude: /node_modules/,
loader: 'eslint-loader',
test: /\.(js|vue)?$/,
}
]
}
})
}
mix.js('resources/js/app.js', 'public/js')
.sass('resources/sass/app.scss', 'public/css');
if (mix.inProduction()) {
mix.version()
}
VueやVueRouter、axiosなどグローバルで定義されているものが、未定義と判定されてしまうため、.eslintrc.jsにglobalsを追加して、設定しておきます。
追加方法は以下を参考にしてください。
module.exports = {
root: true,
parserOptions: {
parser: 'babel-eslint',
},
env: {
browser: true,
jquery: true,
},
// この部分を追加 ----------
globals: {
axios: true,
_uhtracker: true,
Vue: true,
VueRouter: true,
VueTour: true,
},
extends: [
:
:
: 以下省略