迁移
本指南介绍如何将现有的 Storybook 项目从 webpack5 或 Vite framework 迁移到 Storybook Rsbuild(例如 storybook-react-rsbuild)。
你的 agent 可以自动完成此次迁移。安装 agent skills 并让它迁移你的项目:
请将你的 Storybook 版本与对应的 storybook-rsbuild 版本匹配:
从 Storybook Webpack5 Framework 迁移
如果你的 .storybook/main.ts 使用了 webpack5 framework 包(例如 @storybook/react-webpack5、@storybook/vue3-webpack5),请按照本节操作。
1. 替换包
卸载旧的 webpack5 framework 包,并安装对应的 Rsbuild 版本以及 @rsbuild/core。
例如,迁移一个 React 项目:
然后移除旧的包:
framework 包(例如 storybook-react-rsbuild)已将 storybook-builder-rsbuild 作为依赖项包含在内——你无需单独安装 builder。
包映射关系
2. 更新 .storybook/main.ts
3. 将 webpackFinal 转换为 rsbuildFinal
mergeRsbuildConfig for modifications
请始终使用来自 @rsbuild/core 的 mergeRsbuildConfig 来修改配置。直接修改 config.tools.rspack = {...} 这类属性可能不会生效,因为内部配置可能是由函数/对象组成的数组,直接赋值可能会被静默忽略。
resolve.alias
Rsbuild 会相对于项目根目录解析 alias 值。请使用 './src/components',而不是 path.resolve(__dirname, '../src/components')。相对路径写法更简洁,并且能避免 ESM 配置中 __dirname 带来的问题。
4. 处理依赖 webpack 的 addon
部分 Storybook addon 在内部使用了 webpackFinal。请将它们从 addons 移动到 webpackAddons:
webpackAddons 字段会运行每个 addon 的 webpackFinal 钩子,并自动将生成的 webpack 配置转换为 Rspack 配置。
webpackAddons
有一些 addon 在内部挂载了 webpackFinal,必须移动到 webpackAddons(或替换为 Rsbuild 原生等价方案):
@storybook/addon-styling-webpack—— 全局 CSS / PostCSS / Sass / Less。可通过webpackAddons接入,或替换为@rsbuild/plugin-postcss、@rsbuild/plugin-sass或@rsbuild/plugin-less。@storybook/addon-coverage—— 收集测试覆盖率;通过webpackAddons接入。@storybook/preset-create-react-app—— CRA 兼容性;通过webpackAddons接入。
如果某个 addon 的名称以 -webpack 结尾,或其文档提到了 webpackFinal,则可以认为它需要这样处理。即使 storybook build 仍然通过,静默丢弃一个仅支持 webpack 的 addon 也是一种功能退化。
5. 转换常见的 webpack 模式
并非所有 webpack plugin 都与 Rspack 兼容。详情请查阅 Rspack 兼容性指南。
从 Storybook Vite Framework 迁移
如果你的 .storybook/main.ts 使用了 Vite framework 包(例如 @storybook/react-vite、@storybook/vue3-vite),请按照本节操作。
1. 替换包
卸载旧的 Vite framework 包,并安装对应的 Rsbuild 版本以及 @rsbuild/core。
例如,迁移一个 React 项目:
然后移除旧的包:
包映射关系
2. 更新 .storybook/main.ts
3. 将 viteFinal 转换为 rsbuildFinal
resolve.alias
Rsbuild 会相对于项目根目录解析 alias 值。请使用 './src',而不是 path.resolve(__dirname, '../src')。相对路径写法更简洁,并且能避免 ESM 配置中 __dirname 带来的问题。
4. 转换常见的 Vite 模式
Vite plugin 无法与 Rsbuild 一起使用。请在 Rsbuild plugin 列表 中查找等价的 Rsbuild plugin。
验证
迁移完成后,请验证:
npx storybook dev能够无错误启动- 所有 stories 都能正确渲染
- HMR 正常工作(编辑某个组件,能看到它更新)
npx storybook build能够成功完成- addon 功能正常(尤其是 docs、controls、actions)
调试
启用 Rsbuild 调试模式以检查生成的配置:
查看 CLI 输出,确认 Rsbuild 和 Rspack 配置文件被写入的位置。