5

我使用webpackhtml-webpack-plugin來使用生成的腳本包(如bundle.[hash].js)更新我的index.html文件。如何使用Webpack-dev-server和HTML-webpack-plugin將.html輸出到磁盤

然後,我必須運行webpack-dev-server,以便我可以將該軟件包加載到內存中並利用熱模塊更換。

這使得代碼編譯兩次。

不過,我想是webpack-dev-server也能夠更新爲新bundle.[hash].js index.html文件,因爲現在我要運行webpack隨後webpack-dev-sever。編譯兩次似乎很奇怪。

同樣,我運行webpack的唯一原因是讓我的index.html文件更新爲捆綁的新散列。如果我能得到webpack-dev-server以將更新的index.html輸出到磁盤,那麼我可以放棄webpack命令。

這可能嗎?如果是這樣,webpack配置會發生什麼變化?我的webpack配置非常長,所以我不認爲這有助於在這裏發佈。

+0

你有沒有找到它編譯兩次的原因。有相同的問題... – alphapilgrim

+0

是的,它編譯兩次,因爲它應該.webpack'將編譯,並且'webpack-dev-server'將被編譯。我最終沒有使用'webpack'來更新index.html文件,並且在開發過程中只使用'webpack-dev-server',在生產過程中只使用'webpack'。您需要在一個排除任何一個排除,以防止它compiling。 – TetraDev

回答

1

webpack-dev-server將存儲在內存中的編譯包,而不會寫束輸出中的目錄,所以我想用webpack-dev-server當你不需要在包名稱添加[hash]

,你可以有三個webpack配置文件,說webpack.common.js,webpack.dev.jswebpack.prod.js

webpack.common.js包含能夠與其它構造,通過使用webpack-merge

webpack.dev.js用於webpack-dev-server合併常見的配置,並輸出文件名應爲bundle.js

webpack.prod.js用於生產,輸出文件名應該是bundle.[hash].js

那麼你可以簡單地運行webpack-dev-server webpack.dev.js

+0

我使用3種不同的配置,就像Angular2-webpack-starter那樣。但爲了讓我的.NET服務器頁面_Layout.cshtml(這是單頁面應用程序的主視圖)加載webpack包,'_Layout.cshtml'必須由webpack寫入,其名稱爲束。因此,webpack-dev-server無法使用新的捆綁包哈希更新View,我必須使用「webpack」編寫捆綁軟件名稱,然後使用「webpack-dev-server」來爲捆綁軟件提供服務。 – TetraDev

+0

其實我只是意識到它無法從webpack-dev-server加載舊的哈希,因爲沒有緩存,它在內存中加載並在開發服務器停止時清除。所以你是正確的,我可以從開發包中刪除散列。 – TetraDev

+1

新想法:有沒有辦法讓'webpack-dev-server'在構建過程中將資產輸出到wwwroot中?或者只能'webpack'輸出資產到磁盤? – TetraDev