Dev server API
Rsbuild 提供了一组 dev server 相关的 API,并允许你通过插件 hooks 或 JavaScript API 来访问。
如何使用
- 如果你是插件的作者,可以在 Rsbuild 插件中通过 onBeforeStartDevServer 钩子访问 dev server 实例。
- 如果你在使用 Rsbuild 的 JavaScript API,可以通过 rsbuild.createDevServer 方法创建 dev server 实例。
示例
与自定义 server 集成
下面是一个在 express 中集成 Rsbuild dev server 的例子:
更多用法可参考:
API
类型定义
afterListen
- 类型:
() => Promise<void>
通知 Rsbuild 自定义的开发服务器已成功启动,Rsbuild 将在这个阶段触发 onAfterStartDevServer 钩子。
例如:
close
- 类型:
() => Promise<void>
调用 close() 方法来触发 onCloseDevServer 钩子,并执行必要的清理操作。
connectWebSocket
- 类型:
激活 WebSocket 连接,这确保了 HMR 正常工作。
Rsbuild 内置了 WebSocket 处理器以支持 HMR 功能:
- 当用户通过浏览器访问页面时,会自动向服务器发起 WebSocket 连接请求。
- Rsbuild 开发服务器检测到连接请求后,会指示内置的 WebSocket 处理器进行处理。
- 浏览器与 Rsbuild WebSocket 处理器成功建立连接后,便可进行实时通信。
- 每次重新编译完成后,Rsbuild WebSocket 处理器会通知浏览器。随后,浏览器向开发服务器发送
hot-update.(js|json)请求,以加载编译后的新模块。
当你使用自定义 server 时,可能会遇到 HMR 连接失败的问题。这是因为自定义 server 未能将 WebSocket 连接请求正确转发至 Rsbuild 的 WebSocket 处理器。此时,你需要调用 connectWebSocket 方法来让 Rsbuild 能够接收并处理来自浏览器的 WebSocket 连接请求。
environments
- Type: EnvironmentAPI
提供 Rsbuild 的 environment API,这允许你在服务端获取特定环境下的构建产物信息。
rsbuild.config.ts
sockWrite
- 类型:
(type: 'static-changed') => void
向 HMR 客户端传递一些消息,HMR 客户端将根据接收到的消息类型进行不同的处理。
例如,如果你发送一个 'static-changed' 的消息,页面将会重新加载。
发送
content-changed与static-changed具有相同的效果。由于content-changed已经被弃用,请优先使用static-changed。

