返回博客

Storybook + Netlify CMS

将您的内容带到 Storybook

loading
Varun Vachhar
@winkerVSbecks
最后更新

当您使用 Storybook 构建组件时,您将免费获得文档。Docs addon 分析 stories 以生成包含代码示例、props 表和使用指南的文档页面。Audi、Codecademy、Talend 和 Wix 的团队使用 Storybook 来构建他们的设计系统站点。

如果您是开发人员,那么让 stories 和文档散文并排放在 MDX 文件中会很方便。这样,您可以使用 React 组件来设置站点主题,用 Markdown 编写内容,并使用 Git 进行版本控制。

但是非技术团队成员可能不使用 Git 或 pull requests。设计系统文档涉及设计师、产品经理、测试人员和无数其他利益相关者。本文展示了如何将 Storybook 连接到无头 CMS,以允许您的整个团队为文档做出贡献。

为什么使用 Storybook 进行文档编写?

团队使用 Storybook 进行文档编写,因为它分析组件的属性以生成丰富的文档。这使您可以专注于编写使用指南,而不是手动更新 API 文档。

文档功能由 MDX 提供支持,它结合了 Markdown 的创作和 JSX 的交互性。对于开发人员来说,在代码编辑器中打开 *.stories.mdx 文件,添加提交并打开 pull request 非常简单。

但是设计系统维护者通常有各种非技术利益相关者。对于开发人员来说很容易的 git 工作流程可能会无意中限制谁可以为文档做出贡献。幸运的是,将无头 CMS 集成到 Storybook 中非常简单。

从无头 CMS 获取内容

通过将 Storybook 连接到无头 CMS,您可以让每个人都更容易编辑。CMS 为您提供了文本内容的 GUI 编辑器,而 Storybook 充当前端。有很多很棒的无头 CMS 选项,请大量。选择最适合您需求的一个。然后在构建时,Storybook 将查询此内容并将其呈现在各种文档页面上。

使用 Netlify CMS 的示例

我们将使用 Netlify CMS 为 Storybook 使用的 MDX 文件提供 GUI 编辑器。它将您的 Git 存储库视为事实来源。要开始使用,您需要首先将您的 Storybook 发布到 Netlify。然后要设置 Netlify CMS,请在您的静态目录中创建一个 admin 文件夹并添加一个 config.yml 文件。此文件配置 Netlify CMS 以获取您的 MDX 文件,并使它们可以通过 CMS 界面进行编辑。

# config.yml
backend:
 name: git-gateway
 branch: main
 
local_backend: true
 
publish_mode: editorial_workflow
 
media_folder: 'public' # Media files will be stored in the repo under public/
public_folder: '/' # The src attribute for uploaded media will begin with /
 
collections:
 - name: 'docs' # Used in routes, e.g., /admin/collections/docs
   label: 'Docs' # Used in the UI
   folder: 'src' # The path to the folder where the mdx documents are stored
   create: true # Allow users to create new documents in this collection
   extension: mdx
   slug: '{{title}}.stories' # Filename template, e.g., title.stories.mdx
   format: yaml-frontmatter
   frontmatter_delimiter: ['<!--', '-->']
   fields: # The fields for each document, usually in front matter
     - { label: 'Title', name: 'title', widget: 'hidden' }
     - { label: 'Body', name: 'body', widget: 'markdown', modes: ['raw'] }

CMS 需要通过 frontmatter 为每个 MDX 文件提供唯一的标识符——在我们的例子中,这是一个标题。但是,MDX 默认情况下不支持 frontmatter。这就是为什么我们配置了 frontmatter_delimiter 以将 frontmatter 作为 HTML 注释提供。现在您可以在 MDX 文件的顶部指定标题。例如

<!--
 title: introduction
-->
 
import { Meta } from '@storybook/addon-docs';
 
<Meta title="Introduction" />
 
# Introduction to the Storybook design system tutorial
 
The Storybook design system tutorial is a subset of the full [Storybook design system](https://github.com/storybookjs/design-system/), created as a learning resource for those interested in learning how to write and publish a design system using best practice techniques.
 
Learn more in the [Storybook tutorials](https://storybook.org.cn/tutorials/).

接下来,在 admin 文件夹中添加一个 index.html 文件。这将为 CMS 设置编辑界面。

<!DOCTYPE html>
<html>
 <head>
   <meta charset="utf-8" />
   <meta name="viewport" content="width=device-width, initial-scale=1.0" />
   <title>Design system docs CMS</title>
 </head>
 <body>
   <!-- Include the script that builds the page and powers Netlify CMS -->
   <script src="https://unpkg.com/netlify-cms@^2.0.0/dist/netlify-cms.js"></script>
   <script src="https://identity.netlify.com/v1/netlify-identity-widget.js"></script>
   <script>
     CMS.registerPreviewStyle('preview.css');
   </script>
 </body>
</html>

然后将此更新部署到您的 Storybook,启用 Identity & Git Gateway(用于身份验证),您的 CMS 应该可以通过以下方式访问:url_for_your_storybook/admin/index.html。登录后,您将能够编辑您的文档。

请记住,您正在编辑包含 React 组件的 MDX 文件。Netlify CMS 将无法可视化这些组件。也就是说,在上面的 HTML 文件中,我包含了一些预览样式,用于显示 stories 的占位符。您可以从示例仓库中获取该 CSS 文件。

完成编辑后,点击发布,Netlify CMS 将打开一个包含您所有更改的 PR。查看部署预览,如果一切看起来都很好,点击合并。

结论

设计系统维护的秘诀是生成大部分内容,并争取您的队友来帮助完成其余部分。

Storybook Docs 为您提供了开箱即用的设计系统基础设施。它获取您的 stories 并生成文档、props 表和示例。然后,您可以通过添加 Markdown 来进一步自定义它。

将 Storybook 与无头 CMS 配对,以将编辑范围从开发人员扩展到您的团队的其他成员。设计师、PM 和文案人员将获得一个 GUI 编辑器来修改文档散文,然后 Storybook 将在构建时获取这些散文。

团队采用 Storybook 的首要原因之一是其灵活性。请记住,Netlify CMS 只是其中一个选项。您可以将 Storybook 连接到您想要的任何无头 CMS。我希望这个快速教程可以作为您的设计系统文档的起点。

加入 Storybook 邮件列表

获取最新的新闻、更新和发布

6,730位开发人员及更多

我们正在招聘!

加入 Storybook 和 Chromatic 背后的团队。构建被数十万开发人员在生产中使用的工具。远程优先。

查看职位

热门文章

Storybook 6.4

更小、更快、更具交互性
loading
Michael Shilman

组件百科全书抢先看

浏览世界各地的 UI 组件,发现有效的方法
loading
Dominic Nguyen

使用 Storybook 记录设计系统的 4 种方法

如何一起展示 UI 组件、规范和使用指南
loading
Varun Vachhar
加入社区
6,730位开发人员及更多
为什么为什么选择 Storybook组件驱动的 UI
文档指南教程更新日志遥测
社区插件参与其中博客
案例展示探索项目组件词汇表
开源软件
Storybook - Storybook 中文

特别感谢 Netlify CircleCI