模块热更新
模块热更新(HMR - hot module replacement)功能会在应用程序运行过程中,替换、添加或删除模块,而无需重新加载整个页面。主要是通过以下几种方式,来显著加快开发速度:
- 保留在完全重新加载页面期间丢失的应用程序状态。
- 只更新变更内容,以节省宝贵的开发时间。
- 在源代码中 CSS / JS 产生修改时,会立刻在浏览器中进行更新,这几乎相当于在浏览器 devtools 直接更改样式。
HMR 开关
Rsbuild 已内置了对 HMR 的支持,在开发模式下默认启用。
如果你不需要使用 HMR 能力,可以将 dev.hmr 设置为 false,此时热更新和 react-refresh 将被禁用,Rsbuild 会自动降级到 dev.liveReload。
rsbuild.config.ts
如果你需要同时禁用 HMR 和 liveReload,可以将 dev.hmr 和 dev.liveReload 都设置为 false,此时页面上不会发起 WebSocket 请求到 dev server,也不会在文件变更时自动刷新页面。
rsbuild.config.ts
自定义 HMR URL
在默认情况下,Rsbuild 使用当前页面的 host 和端口号来拼接 HMR 对应的 WebSocket URL。
当出现 HMR 连接失败的情况时,你可以自定义 dev.client 配置来指定 WebSocket URL。
rsbuild.config.ts
文件监听
Rsbuild 默认不监听 .git/ 和 node_modules/ 目录下的文件,当这些目录下的文件发生变化时,Rsbuild 不会触发重新构建。这有助于减少内存占用和提升构建性能。
如果你希望监听这些目录,可以手动配置 Rspack 的 watchOptions.ignored 来覆盖默认行为。
例如,监听 node_modules/ 目录且忽略 .git/ 目录,可以配置为:
rsbuild.config.ts
常见问题
请参考 热更新问题。

