2020-08-08

vuetify-loader@1.6.0 が laravel-mix でコケたときの対処法

発生した問題

  • vuetify-loader^1.6.0 の場合に、laravel-mix による js ファイルのビルドに失敗する。
  • ^1.5.0, ^1.4.0 では問題なく動作する。

error message

\node_modules\webpack-cli\bin\cli.js:281
throw err;
^
Error: [VueLoaderPlugin Error] vue-loader 15 currently does not support vue rules with oneOf.
at VueLoaderPlugin.apply (node_modules\vue-loader\lib\plugin-webpack4.js:46:13)
at webpack (node_modules\webpack\lib\webpack.js:51:13)
at processOptions (node_modules\webpack-cli\bin\cli.js:272:16)
// 省略

バージョン

  • vuetify-loader: ^1.6.0
  • laravel-mix: ^5.0.4

対処法

laravel-mix の mix.webpackConfig() を利用せず、mix.extend() によりカスタム関数を実装し、設定の適応方法を変更する。

NG

webpack.mix.js

mix.webpackConfig({
  plugins: [new VuetifyLoaderPlugin()],
  // ...
});
OK

webpack.mix.js

const webpackConfigVuetify = class {
  webpackConfig(config) {
    config.plugins.push(new VuetifyLoaderPlugin());
    // ...
  }
};
mix.extend('vuetify', new webpackConfigVuetify());
mix.vuetify();

備考

laravel-mixmix.webpackConfig() が、デフォルトの設定よりも先にマージされてしまっており、適用される webpackConfig でエラーが起こるようです。