远程获取的HTML的项目如何迁移到Rsbuild #6846
Unanswered
KingrrrYuri
asked this question in
Q&A
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
-
大家好,我正在将一个基于 Vite 的项目迁移到 Rsbuild,但在处理自定义 HTML 和 JS 动态注入逻辑时遇到了两个关键问题,希望能得到一些指导。
我们的项目会代理服务器上的平台资源,并通过本地 API 将编译后的代码注入到指定 DOM 中。在 Vite 中,我们使用了一个自定义中间件插件来实现以下功能:
拦截特定 HTML 请求(如 /x_desktop/app.html 或包含 componentName 的 /x_desktop/index.html),从远程服务器获取原始 HTML,并在 中注入一段用于支持 React Fast Refresh 的脚本;
动态返回 JS 入口脚本(匹配 /${componentPath}/Main* 的请求),该脚本会调用 runComponent() 并引入本地的 ../src/main.jsx,由 Vite 自动处理依赖和 HMR。
这两部分在 Vite 下工作良好,热重载也能正常生效。
迁移到 Rsbuild 过程中遇到的问题:
我尝试将 Vite 中的 ../src/main.jsx 替换为 Rsbuild 构建输出的 ../static/js/index.js,但发现只加载了主入口文件,其他按需 split 的 chunk 并未被自动引入(浏览器控制台报模块缺失错误)。
我尝试进行all-in-one,能成功加载到我的项目,但是热重载是失效的(经测试,对于文件的修改,需重启dev后才能生效),即使启用了 dev.hmr: true,React 组件修改后页面不会自动刷新或更新。不确定是否需要手动注入类似 Vite 的
请问Rsbuild 是否支持类似 Vite 的“运行时动态注入 HTML + 启用 HMR”的能力?如果有,应该如何正确配置?
对于动态返回的 JavaScript 入口(用于 runComponent),如何确保所有相关 chunk 被正确加载?是否需要使用 Rsbuild 提供的 manifest 或 runtime API?
是否有推荐的方式在 Rsbuild dev server 中添加自定义中间件,以实现对 HTML/JS 响应的拦截与改写?
非常感谢!部分代码片段如下,如果需要,我可以提供简化后的复现仓库或相关配置片段。
Beta Was this translation helpful? Give feedback.
All reactions