Storybook
Storybook 是一种流行的在隔离环境中构建 UI 组件的方式。通过将 Storybook 放入你的 Turborepo 中,你可以轻松地与你的应用程序一起开发你的设计系统。
快速开始
如果你更喜欢使用模板,本指南将引导你了解如何在 Vercel 上构建这个 Storybook/Turborepo 模板。
指南
添加 Storybook 应用
在 apps/storybook
目录中,初始化一个新的 Storybook 应用
按照提示创建一个应用。在本指南的其余部分,我们将假设使用 React 和 TypeScript。
须知:
在完成 Storybook 的入门引导后,你可以卸载入门引导插件。
为你的 Button 组件设置一个 story
删除 Storybook 脚手架工具在 src/stories
中创建的 stories 和组件。你将创建自己的。
例如,这是来自 @repo/ui/button
的 Button
组件的一个 story。
将脚本与你的任务对齐
最后,将新的 Storybook 应用集成到你的 Turborepo 中
这些脚本现在将与你的 turbo.json
中的 turbo dev
和 turbo build
任务一起运行。
为了确保在你运行 build
时文件输出被缓存,将 storybook-static
添加到你的 turbo.json
build 任务的 outputs 中


更多提示
共同放置 stories
如果你更喜欢将你的 stories 与它们的源代码共同放置(而不是放在 Storybook 应用中),你需要一些额外的配置。
重新配置 Storybook 源
在 .storybook/main.ts
中,将 config 中的 stories
路径更改为你想要捕获的目录。例如,如果你想在 UI 包中编写 stories
将 story 文件移动到 UI 包
按照上面的指南,将 ./apps/storybook/src/stories/Button.stories.tsx
文件移动到 ./packages/ui/src/Button.stories.tsx
。
更新组件导入,以便它们引用现在共同放置的模块。例如,在 story 的导入中
须知:
你可能还需要根据你的更改和用法更新绝对导入。
你还需要安装编写 stories 所需的任何 Storybook 包。例如,从上面移动 story 将需要你将 @storybook/react
安装到你的 @repo/ui
包中。
配置缓存
因为 stories 现在在 UI 包中,所以对这些 stories 的更改可能会导致任何依赖于你的 UI 包的构建的缓存未命中。但是,更改 story 并不意味着你的生产应用程序应该错过缓存。
为了防止这种情况,请从根 turbo.json
中 build
任务的 inputs 中排除 stories。你还需要创建一个 build:storybook
任务,你稍后会需要它


此外,在 storybook
应用中创建一个包配置,以便在构建 Storybook 应用时考虑到 stories,特别是


须知:
如果你正在使用Compiled Package 模式,你可能还需要将 ^build
添加到你的 dependsOn
中。
重命名 build 脚本
最后,确保你用于构建 Storybook 的脚本通过将其重命名为任务名称来使用我们刚刚编写的配置
曾经是 "build"
的脚本现在是 "build:storybook"
,以确保 stories 包含在用于缓存的哈希中。
验证你的配置
为了确保你的设置正确
- 运行
turbo build:storybook build
。你应该看到缓存未命中。 - 再次运行
turbo build:storybook build
。你应该看到所有缓存命中。 - 在你的
@repo/ui
包中对一个 story 进行代码更改。 - 再次运行
turbo build:storybook build
。你应该只看到 Storybook 应用的缓存未命中。所有其他应用都应该命中缓存。
添加 CSS
如果你的 UI 包导出了自己的 CSS,你需要在 Storybook 应用的渲染器中添加它,类似于你将它添加到你的应用程序的方式。《Storybook 文档》建议你将其添加到 .storybook/preview.ts
文件中。