返回博客

Storybook 6 迁移指南

提升你的组件开发平台

loading
Michael Shilman
@mshilman
最后更新于

本分步指南将帮助您升级到 Storybook 6.0 (SB6)

每年我们都会发布 Storybook 的主要版本。去年春天,发布了 Storybook 5.0,对用户界面进行了令人难以置信的改造。今年,我们彻底改进了 Storybook 的开发者体验。我们将其变成了一流的文档工具,并在此过程中彻底改革了配置故事编写

本指南将带您了解

  1. 升级 Storybook 包
  2. 处理破坏性更改
  3. 更新到当前的最佳实践

我们假设您是从一个 5.0 项目升级,并会告诉您升级所需的所有信息。如果您一直在跟踪 5.x 版本(5.1/5.2/5.3),您可能会跳过一些步骤。如果您来自更早的 Storybook 版本,您可以参考 SB5 升级指南,然后再回来。


☝️ 步骤 1:包升级

第一件事是升级您的 Storybook 包,@storybook/*。您可以使用以下命令进行升级

npx sb@latest upgrade

然后尝试运行 Storybook

yarn storybook

如果浏览器打开并且一切看起来正常,您就完成了大部分工作,可以跳到步骤 3。


✌️ 步骤 2:破坏性更改

如果您没有看到您的 Storybook,是时候弄清楚是哪些破坏性更改让您受阻了。此版本是一个 semver 主版本,因此包含许多可能的陷阱。

查看终端和浏览器控制台中的错误/警告消息,应该会给您一些关于哪里出错的线索。

此外,这里有一份常见的升级问题清单

✅ 您使用 TypeScript 吗?现在它是零配置的 — 并且好得多!— 但您需要更新您的设置

✅ 您是否使用层级分隔符控制侧边栏导航?我们在 6.0 中简化了这一点,并且有一个 codemod 来升级您的故事

✅ 您使用 addon-infoaddon-notesaddon-contextsaddon-centered 吗?如果是,这些在 6.0 中都已被弃用

✅ 您使用 Create React App 吗?如果是,我们已将内置的 CRA 支持移至一个单独的包中

✅ 您使用 addon-docs 吗?我们移除了框架特定的预设,将主题 API 与 Storybook 的主主题分开,移除了用于自定义的“槽位”概念,重命名了一些 DocBlocks,并更新了在 MDX 中嵌入 CSF 的最佳实践。请参阅文档升级说明获取详细信息

✅ 您使用 addon-actionsaddon-backgroundsaddon-knobsaddon-linksaddon-queryparams 吗?如果是,我们为每个插件添加了预设,这些预设改进了插件的启动行为,但可能与您现有的设置冲突。阅读详情

✅ 看到 core-js 依赖错误?这里有一个解决方法

除了这份高级清单,我们在 MIGRATION.md 中详细记录了所有破坏性更改和注意事项。

如果您已经检查了这份清单和 MIGRATION.md,但仍然遇到错误,请尝试清除 node_modules 和您的锁定文件,然后重新安装。npm/yarn 有时需要额外的“推动”!

🤟 步骤 3:最佳实践

如果您的 Storybook 现在可以工作了,恭喜您!给自己点个赞吧。🎉 如果不行,请检查我们的 Github issues加入我们的 Discord

现在您已经完成了基础工作,我们还建议您花一些时间将 Storybook 更新到当前的最佳实践。这些都不是严格必需的,但现在花时间去做是值得的。许多这些更改将在 SB7 中成为必需,我们正在积极改进并基于最新的最佳实践进行构建。

其中包括

✴️ 您是否使用 storiesOf 编写故事?升级到 组件故事格式 (CSF)如果您想对文档进行更多控制,请选择 MDX

✴️ 您使用 config.js 配置 Storybook 吗?Main.js 声明式配置,在 5.3 中引入,是一个巨大的改进,并强烈推荐使用。升级到main.js

✴️ 您使用 TypeScript 吗?如果是,请升级到我们新的零配置 TypeScript 设置,以获得改进的性能和更好的自动生成文档。

✴️ 想要一个精心策划、符合最佳实践的 Storybook 插件设置?考虑升级到 Essentials,这是朝着完全零配置 Storybook 迈出的重要一步。

✴️ 您的组件是否已文档化?添加 Storybook Docs 以获取所有故事的自动生成最佳实践文档。

✴️ 有一个大型 Storybook,想将来自多个框架的故事文档化到一个 Storybook 中,或者需要将多个 Storybook 合并为一个?升级到 Storybook 组合

✴️ 您使用 addon-knobs 吗?Storybook Controls 是 Knobs 的无代码替代品,可根据您的组件属性自动生成控件。这里是如何将您的故事迁移到控件

✴️ 您使用全局参数或装饰器吗?在 6.0 中,您应该以声明方式添加它们;我们已弃用addParameters/addDecorator

🖖 步骤 4:长寿并繁荣

希望到此为止您已成功升级到 SB6。如果是,恭喜您,欢迎来到世界上最好的开发、测试、文档化和探索您的 UI 组件的方式!!!🎉🎉🎉

如果您在完成本指南时遇到问题,或者已经完成了指南但仍然有问题,请执行以下步骤

  1. 在我们的 Github issues 中搜索您的问题 — 可能其他人也遇到了同样的问题。
  2. 创建一个新 issue 描述您的问题,最好附上一个公共仓库的链接,以便我们可以重现问题。
  3. 加入我们的公共 Discord 并在 #support 频道提问。我们是一个友好的社区,希望帮助您完成升级。

加入 Storybook 邮件列表

获取最新新闻、更新和发布信息

7,180开发者及仍在增长

我们正在招聘!

加入 Storybook 和 Chromatic 团队。构建被数十万开发者用于生产环境的工具。远程优先。

查看职位

热门文章

Storybook 6.0

生产级组件开发
loading
Michael Shilman

新的组件查找器和侧边栏

快速导航组件库
loading
Dominic Nguyen

零配置 Storybook

简单设置,即时提升效率
loading
Michael Shilman
加入社区
7,180开发者及仍在增长
为什么为什么选择 Storybook组件驱动的 UI
文档指南教程更新日志遥测
社区插件参与贡献博客
展示探索项目组件词汇表
开源软件
Storybook - Storybook 中文

特别感谢: Netlify CircleCI