7
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Laravel Mix をver5から6へアップグレードした

Last updated at Posted at 2021-03-10

Laravel Mix(Laravelのアセットコンパイルライブラリ)のver5.1を使っていたんですが、
polyfillを導入するにあたってアップグレードしました。

その時に複数回エラーと格闘したので、備忘録として残しておきます。

やることをざっくりまとめ

・laravel-mixのバージョンを上げる
・package.jsonのscriptsを編集
・webpack.mix.jsを編集する
・Node.jsのバージョンをあげる

laravel-mixのバージョンをあげる

私の場合は現行で最新版のpolyfillを入れるにあたって
laravel-mix@^6.0を入れるようログで勧められました。
誘われるままnpm install

npm install laravel-mix@^6.0.0

とりあえずバージョンだけはあげられました。

package.jsonのscriptsを編集

npm run watchを打ったところ、以下のエラーが出力。

[webpack-cli] Unknown argument: --hide-modules

調べてみたところ、laravel-mixの5系で使えていた--hide-modulesオプションが、6系ではなくなったらしい。
Laravel Mixリファレンス: Update Your NPM Scripts

というか、リファレンスを見ると6系のscriptsの書き方が大分変わっている・・・。

リファレンスにのっとり、package.jsonのscriptを書き換える。

"scripts": {
    "development": "mix",
    "watch": "mix watch",
    "watch-poll": "mix watch -- --watch-options-poll=1000",
    "hot": "mix watch --hot",
    "production": "mix --production"
}

ちなみに、6系では--hide-modulesを使うまでもなくnode_modules以下をwatch対象から外してくれるようです。
(リファレンスWatch Ignores参照)

webpack.mix.jsを編集

リファレンスをよくよく見てみると、バージョンアップによりwebpack.mix.jsも少し変更があったようです。
使っているjsフレームワークに合わせて、少し編集を加えます。

参照:リファレンス API for JavaScript Frameworks

mix.js('resources/js/app.js', 'public/js')
    .sass('resources/sass/app.scss', 'public/css');
mix.js('resources/js/app.js', 'public/js')
    .sass('resources/sass/app.scss', 'public/css').vue();

私の場合はVueを使っていたので上記のようにしましたが、Reactを使っている方はreact()でイケるようです。

Node.jsのバージョンをあげる

ここまでやってnpm run watchをしても、まだエラー出ました。

You are using an unsupported version of Node. Please update to at least Node 12.14

どうやら使っているNode.jsのバージョンが古いようです。

node -v
# => 10.16

確かに古いので、バージョンを上げることにしました。

# バージョンを指定してインストール
nodebrew install-binary v12.14

# バージョンを指定
nodebrew use v12.14

インストールするだけでなく、useも忘れずにしましょう。
これでlaravel-mixのバージョンアップは完了です!

補足①ここまでの手順を試してもエラーが出る時

ここまでやってもエラーが出る場合は、一度フロントエンドライブラリを入れ直してみましょう。

// ライブラリ削除
rm -r node_modules

// ロックファイルを削除してバージョン固定を解除
rm package.lock.json

// 過去にインストールしたライブラリのキャッシュを削除
npm cache clean

// 上記コマンドで初期状態に戻した上でのインストール
npm i

補足②laravelでのpolyfill設定

laravel-mix-polyfillのページを見ればわかることですが、以下の通りです。

const mix = require('laravel-mix');
require('laravel-mix-polyfill');


mix.js('resources/js/app.js', 'public/js')
    .sass('resources/sass/app.scss', 'public/css')
    .polyfill({
        enabled: true,
        useBuiltIns: "usage",
        targets: "firefox 50, IE 11"
    }).vue();
7
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?