LaravelにReactを導入してElixirでコンパイルする
Laravel
にReact
を導入してElixir
でコンパイルします。
Laravel
のバージョンは5.3です。
最初にLaravel
をインストールした時点でのpackage.json
のdevDependencies
とdependencies
を確認します。
"devDependencies": {
"bootstrap-sass": "^3.3.7",
"gulp": "^3.9.1",
"jquery": "^3.1.0",
"laravel-elixir": "^6.0.0-9",
"laravel-elixir-vue": "^0.1.4",
"laravel-elixir-webpack-official": "^1.0.2",
"lodash": "^4.14.0",
"vue": "^1.0.26",
"vue-resource": "^0.9.3"
}
dependencies
はありませんでした。
Laravel5.3ではvue.js
というフレームワークをデフォルトで使用しているようですが、Reactを使いたいため、削除します。
他にもいらない項目を削除した結果、以下のようになりました。
"devDependencies": {
"gulp": "^3.9.1",
"laravel-elixir": "^6.0.0-9"
}
gulpfile.js
を以下のようにします。
var elixir = require('laravel-elixir');
elixir(function(mix) {
mix.browserify("app.js");
});
この状態でgulp
コマンドを実行すると、以下のエラーになってしまいました。
Instllation Required
To use "mix.browserify()", please run the following command, and then trigger gulp again.
=======================================================
npm install laravel-elixir-browserify-official --save-dev
=======================================================
「laravel-elixir-browserify-officialをインストールしてください」とのことなので、指定されたとおりのコマンドを実行します。
npm install laravel-elixir-browserify-official --save-dev
その後、再度gulp
コマンドを実行すると、今度は以下のエラーになってしまいました。
Error: Cannot find module 'react' from ...
react
のモジュールがないと言われているので、react
のドキュメントの「Using React from npm」を参考に、以下のモジュールをインストールしました。
npm install --save react react-dom babelify babel-preset-react
その後、再度gulp
コマンドを実行すると、今度は無事に成功しました。 resources/assets/js/app.js
がコンパイルされ、public/js/app.js
に出力されます。 いろいろとインストールした結果、package.json
のdevDependencies
とdependencies
は以下のようになりました。
"devDependencies": {
"gulp": "^3.9.1",
"laravel-elixir": "^6.0.0-9",
"laravel-elixir-browserify-official": "^0.1.3"
},
"dependencies": {
"react": "^15.3.2",
"react-dom": "^15.3.2",
"babel-preset-react": "^6.16.0",
"babelify": "^7.3.0"
}