webstorm 本身不生成热更新配置,需在 webpack.config.js 中正确设置 devserver.hot=true、livereload=false,并添加 hotmodulereplacementplugin 插件;vite 则只需 vite.config.ts 中 server.hmr=true。

WebStorm 本身不生成热更新配置代码,它只负责保存文件;真正要配的是 webpack.config.js 或 vite.config.ts —— 你 Ctrl+S 没反应,90% 是因为这俩文件里没写对关键字段。
webpack.config.js 里必须写的三处 HMR 配置
Create React App 默认带 HMR,但自己搭的 Webpack 项目容易漏掉细节。光写 hot: true 不够,浏览器照样整页刷新。
-
devServer.hot必须设为true(Webpack 5+ 仍需显式声明) -
devServer.liveReload必须设为false,否则 CSS/JS 改完还是 reload 整页 -
plugins数组里得有new webpack.HotModuleReplacementPlugin()(Webpack 4 要强制加;Webpack 5 可省略,但加上更稳)
示例片段:
devServer: {
hot: true,
liveReload: false,
port: 3000
},
plugins: [
new webpack.HotModuleReplacementPlugin()
]
React 函数组件保状态热更新靠的是 react-refresh-webpack-plugin
Webpack 原生 HMR 替换模块后会重执行函数组件,useState 和 useEffect 的状态全丢。这不是 WebStorm 的问题,也不是 webpack 配错了,而是缺了运行时补丁。
- 装插件:
npm install -D @pmmmwh/react-refresh-webpack-plugin - 在
webpack.config.js里加插件,并确保 Babel 配了@react-refresh/babel-plugin - Vite 项目不用操心这个——
vite.config.ts里只要server.hmr: true(默认就是 true)
WebStorm 里按 Ctrl+S 没热更新?先看浏览器 Console
别急着改 IDE 设置,先打开浏览器开发者工具 → Console 标签页,搜 [WDS]:
- 看到
[WDS] Hot Module Replacement enabled.→ HMR 真启了 - 只看到
[WDS] Live Reloading enabled.→hot: true没生效,或被liveReload: true覆盖了 - 完全没 [WDS] 日志 → 终端根本没跑
npm start或vite,WebStorm 再怎么配也白搭
最常被忽略的一点:热更新链路是「WebStorm 保存 → 终端进程监听 → webpack/vite 启动 HMR → 浏览器 WebSocket 接收更新」,任意一环断开,Ctrl+S 就只是存了个文件。











