ぬにょす(挨拶)。
表題の通りですが、PHPフレームワークであるところのLaravelを使ってみようということで、やったこと・できたこと・できなかったこと等を自分の備忘録として残していきます。
#3の今回はビルド環境の整備です。
Browsersync
Laravelの公式ドキュメントにBrowsersyncリロードについての説明があります。ファイルの変更を検知して自動的にページを再読み込みしてくれるそうです。webpack.mix.jsを以下のように編集し、仮想マシン上で npm run watch を実行してからホストOSのブラウザで仮想マシンの3000ポートにアクセスすると無事に自動リロードが有効になりました。
なお、初回の npm run watch は勝手にBrowserSyncなどの追加パッケージをインストールして終了…するかと思いきや、依存関係の警告?が出ました。
Code language: plaintext (plaintext)npm WARN browser-sync-webpack-plugin@2.0.1 requires a peer of webpack@^1 || ^2 || ^3 but none is installed. You must install peer dependencies yourself.
正しい対処法なのか分かりませんが、ncu を使って全パッケージを最新版にしてから再実行したところ、ファイル監視が始まりました。
Code language: plaintext (plaintext)[Browsersync] Proxying: http://ubuntu1804.local [Browsersync] Access URLs: ----------------------------------------- Local: http://localhost:3000 External: http://ubuntu1804.local:3000 ----------------------------------------- UI: http://localhost:3001 UI External: http://localhost:3001 ----------------------------------------- [Browsersync] Watching files...
Bladeテンプレートを編集して保存すると期待通り再読み込みされました。
Hot Module Replacement (HMR)
npm run hot コマンドは、ブラウザの再読み込みなしにヌルヌルと変更が反映される、そんな素敵コマンドです。BrowserSyncがPHPファイルの変更でブラウザを再読み込みするのに対して、HMRはJavaScriptやCSSを動的に置き換えるようです(という認識です)。
BrowerSyncと共存できないかと四苦八苦・試行錯誤した結果、以下のように設定すると期待通りの動きになった感じがします。
結果オーライな雰囲気が満載ですが、仮想マシン上で npm run hot コマンドを実行すると8080ポートでHMRが動いて、3000ポートでBrowserSyncが動きます。で、HMRはBrowserSyncのProxyにもなっている(という認識です…)。
正直、色々とオプションを設定したものの、何がどういう役割を果たしているのか正しく理解できていません(涙目)。ただ、期待通りの動きになったには違いないので、良しとします。
開発環境とリリース環境を分ける
BrowserSyncもHMRも開発時だけ有効になっていれば良く、逆にリリース環境ではキャッシュ対策としてバージョンナンバーを付与させたい。設定を環境で分けることにしました。
最終的な webpack.mix.js は以下のようになりました。
次回は
ログイン系の処理をVueやaxiosでの処理に変えたい(希望)。
コメント