Laravel Mix
Laravel Mixとは?
- 多くの一般的なCSSとJavaScriptのプリプロセッサを使用し、Laravelアプリケーションために、構築過程をWebpackでスラスラと定義できるAPIを提供している
- わざわざ独自にWebpackを設定したり、babelの設定をせずにReact.jsやVue.jsを使うようすることができる
どうやって使うの?
下記コマンドでLaravel+Reactのプロジェクト作成すると使えるようになっている。
具体的には、npmコマンドを実行してLaravel Mixの具体的な機能を使用できる。
$ composer create-project laravel/laravel sample "5.5.*"
$ php artisan preset react
$ npm install
npmコマンドについて
-
npm run
-
package.json
のscripts
に記載されているタスク実行機能を呼び出すコマンド
-
-
npm run dev
- 全タスク実行
-
package.json
のscripts
のdev
で設定している内容を実行
-
npm run production
- 全タスク実行を実行し、出力を圧縮
-
package.json
のscripts
のproduction
で設定している内容を実行
-
npm run watch
- ターミナルで実行し続け、関連ファイル全部の変更を監視する。そして、ファイルの変更があると自動的に再コンパイルする
-
package.json
のscripts
のwatch
で設定している内容を実行
-
npm run watch-poll
- 特定の環境のWebpackでは、ファイル更新時に変更されない時がある。その時に使用する
-
package.json
のscripts
のwatch-poll
で設定している内容を実行
Reactを使用するには
- Laravel MixはReactをサポートするために、Babelプラグインを自動でインストールしてくれている。それを使用開始するには、下記のように
mix.react()
を記述する - 実際には、Laravel Mixは最適なBabelプラグインとして
babel-preset-react
をダウンロードし取り込んでいる - babel-preset-reactとは?
BabelでJSXを変換するためのモジュール。Babelでは変換対象のモジュールのことをプリセットと呼ぶ
webpack.mix.js
let mix = require('laravel-mix');
mix.react('resources/assets/js/app.js', 'public/js')
.sass('resources/assets/sass/app.scss', 'public/css');
疑問
- ReactでJSXとES2015を使用するためには、
babel-preset-react
とbabel-preset-es2015
が必要ははずだが、babel-preset-es2015
はどこでインストールされている? - 下記記述で以下のような機能を取得することができるみたいだが、mix.js()を使用しないと使えないみたい。なら、別のところでES2015を使用できる設定をしている?
- ES2015記法
- モジュール
-
.vue
ファイルのコンパイル - 開発環境向けに圧縮
webpack.mix.js
mix.js('resources/assets/js/app.js', 'public/js');
備考
- Laravelのプロジェクトを作成して、Reactを使用する設定に変更してやると、もうその時点でJSXは使用できる状態になっている
引用、さらに調べたい