Ответ 1
Так как у меня есть экспресс-сервер, мне действительно нужен webpack-dev-сервер?
Да и нет. Вы можете использовать гибридный подход, который по существу настраивает webpack-dev-сервер как прокси-сервер. У вас есть экспресс-сервер, обслуживающий все, кроме активов. Если это актив, запрос отправляется/проксируется на webpack-dev-сервер. См. Ответ здесь для более подробной информации: Как разрешить webpack-dev-серверу разрешать точки входа от маршрутизатора-ответчика
В качестве альтернативы вы можете использовать webpack-dev-middleware и webpack-hot-middleware, если вы не хотите иметь дело со всей грязной логикой проксирования и иметь 2 сервера. См. Пример здесь: https://github.com/glenjamin/webpack-hot-middleware/blob/master/example/server.js
какие преимущества и недостатки его использования?
Перезагрузка в реальном времени и замена горячего модуля. Очень полезная функция для развития на мой взгляд
И если я хочу использовать hot-loader, нужен ли webpack-dev-сервер?
Нет, он работает поверх Webpack интерфейса замены горячего модуля. Вы можете создать свой собственный "горячий сервер", если хотите. Клиент webpack-dev-server просто слушает socket.io для горячих обновлений и вызывает postMessage (https://github.com/webpack/webpack-dev-server/blob/8e8f540b2f7b35f7b6c3ce616a7fd2215aaa6eea/client/index.js#L64-L67), который затем подбирается сервер https://github.com/webpack/webpack/blob/bac9b48bfb0f7dd9732f2faafb43ebb22ee2a2a7/hot/only-dev-server.js#L59-L67.
Или я рекомендую, что вы можете просто использовать webpack-dev-middleware и webpack-hot-middleware, которые я упомянул выше. Таким образом, вам не нужно беспокоиться о прокси-логике, и вы можете легко интегрировать горячую перезагрузку в существующий экспресс-сервер без необходимости использования webpack-dev-server