我有一個反應應用程序,它運行在一個快速服務器上,並與webpack捆綁在一起。我的問題是,每當我重新啓動服務器時,就像我正在對其進行更改時一樣,即使我不對前端進行任何更改,也需要重新構建前端包。更智能的webpack捆綁反應和快遞
只需重新加載服務器部分並保留當前前端包就可以了,只需要進行不涉及前端包的服務器/ api更改即可。
下面是在開發環境中運行的代碼:
const compiler = webpack(webpackConfig)
const middleware = webpackMiddleware(compiler, {
publicPath: webpackConfig.output.publicPath,
contentBase: 'src',
stats: {
colors: true,
hash: false,
timings: true,
chunks: false,
chunkModules: false,
modules: false
}
})
app.use(middleware)
app.use(webpackHotMiddleware(compiler))
app.get('*', (req, res) => {
res.write(middleware.fileSystem.readFileSync(path.join(__dirname, 'build/app.html')))
res.end()
})
有沒有一種更聰明的辦法做到這一點?是否有可能將當前的前端軟件包保留在內存中並重新加載服務器?或者我可以檢測是否需要更新軟件包並在不需要更新時跳過該過程?
歡迎任何提示,建議和建議!讓我知道你是否需要其他信息。謝謝!
雖然webpack在server.js文件中運行,但'webpack-dev-middleware'模塊給出了一個'lazy'選項,它似乎反映了你的報價所說的內容,但我並不認爲這解決了問題,因爲停止服務器會從內存中刪除構建不是嗎? –
@ShanRobertson,我編輯了我的回覆。如果您正在進行公開回購,請分享鏈接,以便我可以對其進行測試......'lazy:true;'表示無需觀看,但對每個請求重新編譯'watchOptions'只有在懶惰設置爲false時纔有效。 webpack-dev-server不會將文件寫入磁盤,它通過Express實例從內存中提供結果。但是webpack - watch不會將文件寫入磁盤,因此您可以保持構建。 – Sbe88