博客原文
我在前幾天剛寫過的《讓 F5 歇一下子——laravel-mix 自動刷新之道》中介紹了 laravel-mix 實現自動刷新的幾種方法,其中就有涉及 hmr(Hot Module Replacement),但裏面都是以 Laradock 環境爲例。對於 Laravel 官方首推的 Homestead 固然也是能夠的,只不過用法上有些差異,於加上 laravel-mix 自己的一些 BUG(在 issue 裏搜索 hmr
結果就有好幾頁 ),對於剛接觸的人來講可能無從下手。前端
本文介紹兩種不一樣的玩法。node
首先假定你已經建立了一個 laravel 項目,進行了相關配置(.env 配置及綁定測試域名,如:laravel.test)並已裝好了後端依賴
由於 Homestead 提供的環境裏默認包含了前端開發所須要的 Node 環境及相關工具(gulp, npm, yarn 等),因此直接使用它們彷佛是很省事的選擇。webpack
vagrant ssh
鏈接虛擬機,進入項目目錄後安裝前端依賴laravel
yarn install
在 webpack.mix.js 中調整相關配置web
使用 mix.Webpack() 配置 devServernpm
mix.webpackConfig({ devServer: { watchOptions: { poll: 2000, // 這個值可調整,性能高的時候能夠調小,也能夠直接設置爲 true ignored: /node_modules/, }, }, })
> 這一配置很關鍵,由於要是僅使用 devServer 的默認 watch 選項,對於虛擬機環境是無效的([見 webpack 文檔](https://webpack.js.org/configuration/watch/#watchoptionspoll)) - 調整 hmrOptions ```js mix.options({ hmrOptions: { host: 'laravel.test', port: 8080 } }) ```
yarn run hot
,而後在瀏覽器中使用綁定的測試域名(如:laravel.test)訪問固然也可使用宿主機的 Node 環境,對於開發都來講,這些環境應該也是必須的了。gulp
從宿主機終端進入項目目錄並安裝前端依賴後端
yarn install
webpack.mix.js 中使用 webpackConfig 進行配置瀏覽器
mix.webpackConfig({ devServer: { disableHostCheck: true, }, // 其它配置 })
disableHostCheck: true 是爲了不出現下面這種錯誤。
與玩法一中不同,再也不須要特別在 hmrOptions 中指定 devServer 和 host 和 port,使用默認的就好(事實上也 不能像前面那樣指定,由於會出現 IP/端口 衝突)
yarn run hot
,而後在瀏覽器中使用綁定的測試域名(如:laravel.test)訪問兩種方法並無誰好誰壞之分,具體使用哪一種方法視具體場景及我的喜愛而定。就我我的而言,一般使用第二種,主要緣由有二:bash
如同窗習不少其它新工具新玩法同樣,剛開始折騰 laravel-mix 時老是磕磕絆絆(有很多坑),但一旦掌握了竅門,就能極大的方便平常開發,提升工做效率。博客裏記下這些,權當備忘,也算是分享,獨樂不如衆樂。