リアクションアプリがあり、エクスプレスサーバー上で動作しており、webpackにバンドルされています。私の問題は、サーバを再起動するたびに、フロントエンドに何も変更を加えていないのに、変更を加えるときのようにフロントエンドバンドルを永久に再構築するということです。リアクションとエクスプレスでバンドルしたよりスマートなwebpack
サーバー部分をリロードして、フロントエンドバンドルに関係しないserver/api変更を行うだけで、現在のフロントエンドバンドルをそのまま残しておくとよいでしょう。ここで
は、DEV環境での実行コードは次のとおりです。
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'のすべての要求に対して再コンパイルはlazyがfalseに設定されている場合にのみ機能します。 webpack-dev-serverはファイルをディスクに書き込まず、Expressインスタンスを介してメモリから結果を提供します。しかしwebpack --watchはファイルをディスクに書き込むので、ビルドを保つことができます。 – Sbe88