お久しぶりです。
今回は以前苦戦したlaravel-elixir → laravel-mixにした際の手順を記載します。
同じように苦戦する方が出ないことを願って、かつ自分が忘れないためのメモです。
なお、laravel5.3以前 → 5.4以降へのアップグレードを検討している人向けです。
laravel自体のアップグレードはこちら
最近、フロントエンドはタスクランナー中心の開発が増えてきました。
laravelでは、これまでlaravel-elixirというパッケージを利用してscssやes2015・JSフレームワークの監視・公開ファイルへの変換を行っていました。
laravel5.4にて、上記に代わってlaravel-mixというパッケージが利用されるようになりました。
これまで内部的に利用していたgulpを利用せず、webpackの機能で変換処理を行っています。
手順
- laravel-mixをインストールします。
npm install laravel-mix --save-dev
※注意点
laravel-mixは以下を参照し、できるだけ最新のバージョンを利用してください。
古いバージョンだとsassの変換や圧縮が動作しないことがありました。
https://github.com/JeffreyWay/laravel-mix/releases
- laravel-elixir(とあれば関連パッケージ)をアンインストールします。
npm uninstall laravel-elixir laravel-elixir-vue-2 laravel-elixir-official --save-dev
- package.jsonにnpm scriptを定義します(既存のdev、prodは削除してください)。
{
...
"scripts": {
"webpack": "cross-env NODE_ENV=development webpack --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js",
"dev": "cross-env NODE_ENV=development webpack --watch --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js",
"hmr": "cross-env NODE_ENV=development webpack-dev-server --inline --hot --config=node_modules/laravel-mix/setup/webpack.config.js",
"production": "cross-env NODE_ENV=production webpack --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js"
},
...
}
- package.jsonと同じディレクトリにwebpack.mix.jsを生成し、gulpfile.jsを削除します。
// 以下はサンプルです。// 既存のgulpfile.jsとほぼ同じようなコードで対応可能ですが、詳細は上記リポジトリを参照ください。mix.js('resources/assets/js/app.js', 'js/')
.sass('resources/assets/sass/app.scss', 'css/');
基本的にはこれで動作します。
個人的には、デフォルトでvuejsやreactを利用できるのはとても良いなと感じています(そのぶん依存ライブラリがとても多いですが)。