close
logologo
指南
配置
插件
API
社区
版本
更新日志
Rsbuild 0.x 文档
English
简体中文
指南
配置
插件
API
社区
更新日志
Rsbuild 0.x 文档
English
简体中文
logologo

开始

介绍
快速上手
功能导航
名词解释

框架

React
Vue
Preact
Svelte
Solid

基础

命令行工具
开发服务器
构建产物
静态资源
HTML
JSON
Wasm
TypeScript
Web Workers
部署静态站点
升级 Rsbuild

配置

配置 Rspack
配置 Rsbuild
配置 SWC

样式

CSS
CSS Modules
CSS-in-JS
Tailwind CSS v4
Tailwind CSS v3
UnoCSS

进阶

路径别名
环境变量
模块热更新
浏览器范围
浏览器兼容性
模块联邦
多环境构建
服务端渲染(SSR)
测试

优化

代码拆分
产物体积优化
提升构建性能
静态资源内联

迁移

从 Rsbuild 0.x 迁移
webpack
Create React App
Vue CLI
Vite
Vite 插件
Modern.js Builder

调试

开启调试模式
构建性能分析
使用 Rsdoctor

常见问题

通用类问题
功能类问题
异常类问题
热更新问题
📝 在 GitHub 上编辑此页
上一页环境变量
下一页浏览器范围

#模块热更新

模块热更新(HMR - hot module replacement)功能会在应用程序运行过程中,替换、添加或删除模块,而无需重新加载整个页面。主要是通过以下几种方式,来显著加快开发速度:

  • 保留在完全重新加载页面期间丢失的应用程序状态。
  • 只更新变更内容,以节省宝贵的开发时间。
  • 在源代码中 CSS / JS 产生修改时,会立刻在浏览器中进行更新,这几乎相当于在浏览器 devtools 直接更改样式。

#HMR 开关

Rsbuild 已内置了对 HMR 的支持,在开发模式下默认启用。

如果你不需要使用 HMR 能力,可以将 dev.hmr 设置为 false,此时热更新和 react-refresh 将被禁用,Rsbuild 会自动降级到 dev.liveReload。

rsbuild.config.ts
export default {
  dev: {
    hmr: false,
  },
};

如果你需要同时禁用 HMR 和 liveReload,可以将 dev.hmr 和 dev.liveReload 都设置为 false,此时页面上不会发起 WebSocket 请求到 dev server,也不会在文件变更时自动刷新页面。

rsbuild.config.ts
export default {
  dev: {
    hmr: false,
    liveReload: false,
  },
};

#自定义 HMR URL

在默认情况下,Rsbuild 使用当前页面的 host 和端口号来拼接 HMR 对应的 WebSocket URL。

当出现 HMR 连接失败的情况时,你可以自定义 dev.client 配置来指定 WebSocket URL。

rsbuild.config.ts
export default {
  dev: {
    client: {
      host: 'localhost',
      protocol: 'ws',
    },
  },
};

#文件监听

Rsbuild 默认不监听 .git/ 和 node_modules/ 目录下的文件,当这些目录下的文件发生变化时,Rsbuild 不会触发重新构建。这有助于减少内存占用和提升构建性能。

如果你希望监听这些目录,可以手动配置 Rspack 的 watchOptions.ignored 来覆盖默认行为。

例如,监听 node_modules/ 目录且忽略 .git/ 目录,可以配置为:

rsbuild.config.ts
export default {
  tools: {
    rspack: {
      watchOptions: {
        ignored: /\.git/,
      },
    },
  },
};

#常见问题

请参考 热更新问题。