返回博客

宣布 Storybook 3.4

Polymer, Image/Vue/Angular Storyshots, 多层级结构,以及更多!

loading
Michael Shilman
@mshilman
最后更新

各位,又到了这个时候了:我们很高兴宣布 Storybook 的最新迭代版本,这款屡获殊荣的软件用于在 React、React Native、Vue、Angular 和 Polymer 中开发、测试和文档化 UI 组件。🍾🥂😅

Storybook 3.4 已发布到 NPM registry,这是一个重要版本。它包括:

  • 新增框架支持:Polymer!
  • 组件测试:Storyshots 图像快照,Vue/Angular 支持
  • UI 改进:多层级故事结构
  • Storysource:用于组件代码文档的新插件

继续阅读以了解改进详情和简要状态更新!


🎁 Polymer 支持

我们很荣幸将 Polymer 添加到我们不断增长的支持框架列表中。这是继 3.2 版的 Vue3.3 版的 Angular 之后自然的延续。Polymer 的支持由来自 XebiaStijn Koopal, Norbert de Langen, Teije van Sloten, 和 Léon Rodenburg 贡献。🙏

Storybook ❤ polymer!2 分钟内就能在你的项目中运行起来。 

Storybook for Polymer 除了支持 Polymer,还支持原生的 custom elements 和纯 HTML。所以如果你想用 HTML 编写简单的示例,或者更专注于 CSS/SASS 组件,它也非常有用。

和往常一样,将 Storybook 添加到你的 Polymer 项目中非常容易

npm i -g @storybook/cli
cd my-polymer-project
getstorybook
npm run storybook

Stijn 写了一篇精彩的入门文章,详细介绍了如何使用 Storybook for Polymer,所以请查看一下!

📸 图像快照

3.4 版的第二个重大改进是 StoryShots 的 图像快照 功能,由 Thomas Bertet 无私贡献。🔥

Storyshots 图像快照中实现的视觉差异比较。

在 3.4 版本之前,StoryShots 使用 Jest 的 DOM 快照功能来计算组件版本之间的差异,并在渲染发生变化时自动通知开发人员。DOM 差异比较可以捕获许多回归问题,但无法捕获纯视觉上的变化,例如 CSS 更新引起的变化。

在图像快照中,渲染后的图像被保存到磁盘上,这样任何类型的视觉变化(包括 DOM 变化以及 CSS 变化等)发生时都能被捕获。

要使用最简单的配置来使用图像快照,请调用带有自定义测试的 initStoryshots

import initStoryshots, { imageSnapshot } from '@storybook/addon-storyshots';

initStoryshots({ suite: 'Image storyshots', test: imageSnapshot() });

要了解更多信息并查看其他配置模式,请参阅 StoryShots 文档。目前所有平台都支持图像快照,React Native 除外。

✨ Vue/Angular 的 StoryShots

3.4 版本还改进了 StoryShots,增加了对 Vue 和 Angular 的支持。这项工作是由 Igor Davydkin 在他生日那天贡献的,这是送给 Storybook 社区的一份令人难以置信的礼物。🎁

StoryShots 会尝试根据你的项目依赖项推断项目类型,但你也可以使用 framework 选项手动指定,该选项当前可以取以下值之一:undefined, 'react', 'react-native', 'vue', 'angular'。例如:

import path from 'path';
import initStoryshots from '@storybook/addon-storyshots';

initStoryshots({
  framework: 'vue',
  configPath: path.join(__dirname, '.storybook'),
});

更多信息请参阅 StoryShots 文档

🌿 多层级故事结构

Storybook UI 也通过多层级故事结构得到了改进。这项改进由 Max Meinders 贡献,允许你在 UI 中将故事分组到可视化的部分

在 Storybook 3.4 中将你的故事分组到可视化的部分,如 Lonely Planet 的 Backpack UI 中所示。 

要进行设置,有一个新的配置选项 hierarchyRootSeparator。例如,以下设置允许你创建故事组

import { setOptions } from '@storybook/addon-options';

setOptions({
  hierarchySeparator: /\//,
  hierarchyRootSeparator: /\|/,
});

storiesOf('Group1|path/to/component1')
  .add('one', () => ...)
  .add('another', () => ...)
  
storiesOf('Group1|path/to/component2')
  .add(...)
  
storiesOf('Group2|component3')
  .add(...)

更多信息请参阅 addon-options README

📄 Storysource 插件

作为一个额外的福利,Igor Davydkin 还将他的 Storysource 插件 偷偷添加到了 3.4 版本中。Storysource 在 Storybook 的插件面板中显示你的故事代码,让观看者可以并排浏览组件的使用方式及其输出行为。

Storysource 是我们目前为止文档化组件最直接的方式,而且很容易添加到你的项目中。首先,安装插件:

yarn add --dev @storybook/addon-storysource

然后,将库导入到你的 addons.js 文件中:

import '@storybook/addon-storysource/register';

最后,向自定义的 webpack.config 添加一个钩子,这将允许插件自动处理你的所有故事:

module.exports = {
  module: {
    rules: [
      {
        test: /\.stories\.jsx?$/,
        loaders: [require.resolve('@storybook/addon-storysource/loader')],
        enforce: 'pre',
      },
    ],
  },
};

更多 Storysource 的使用选项请参阅 包的 README。关于技术细节,Igor 写了一篇精彩的文章,解释了它在底层是如何工作的。

💥 还有更多!

Storybook 3.4 包含了数百项其他改进。从诸如向 addon-info 添加代码示例“复制按钮”之类的良好细节(#2713)到基于用户在 3.3 版本中反馈的众多 Angular 改进(#2690, #2669, #2735)。完整列表请参阅我们的 CHANGELOG

底层最大的变化之一是一次重大的重构,我们添加了一个与框架无关的核心库,以支持 React、Vue、Angular、Polymer 以及未来更多框架(#2241)。这使得向 Storybook 添加新框架以及维护我们不断增长的框架集合变得更加容易。如果你想为你喜欢的框架添加支持,请在 TwitterSlackGithub 上与我们联系,我们将在下个版本中帮助你实现它!


📈 不断向前,向上发展

Storybook 支持的框架的月度 npm 下载量增长情况,并标注了包的发布日期。 

Storybook 3.4 继续了由社区驱动的一系列出色版本。我们已经超越了

  • GitHub 上 2.2 万+ 星标和 400+ 贡献者
  • NPM 上每周 20 万+ 下载量

Storybook 最近还在 2018 年 React Amsterdam 大会上获得了“对社区最有影响力的贡献”奖。在这里阅读相关信息

如果 Storybook 为你的 UI 开发过程带来了愉悦和效率,请考虑帮助改进 Storybook。无论是贡献本篇文章中描述的新功能,修复 bug(我们也确实有 bug),还是帮助改进文档,每个版本的发布都涉及大量工作。请在 Slack 上加入我们,在 Open Collective 上给予我们财务支持,或者直接参与 Github 上的贡献。

非常感谢为这个版本做出贡献的杰出社区成员:@9034725985 @aaronfullerton @abrahamgnz @adrukh @alexandermikuta @alfredo-delgado@alterx @anescobar1991 @arty-name @aseeto @avol-io @aymeric-duchein @benbakhar @chentsulin @christiandavis @clehnert-psl @cliedeman @cshell7 @danawhite @dangreenisrael @danielduan @davidkwan95@dependencies-bot @derekshull @dfdeagle47 @ersel @felipedeboni @fredyc @getsetbro @godban @gongreg @guylivni @hswolff @hypnosphi @igor-dv @javidjamae @jayandcatchfire @jdonor @jeffcarey @jonrimmer@juristr @kazupon @kevinsuttle @kiwka @kn0ll @kt3k @lachlanjc @m10l @markelog @matissjanis @mehandes @meros @metronom72 @mloughry @mnicole @mshaaban088 @mynnx @nblackburn @ndelangen @outspaced @pascalduez @paul42 @playfulcorgi @preya @primigenus @psimyn @punitgr @quramy @rhalff @richardbray @seberik @sec0ndhand @shilman @simon360 @sixmen @superol3g @sw-yx @telichkin @theneva@thomasbertet @tmeasday @tniezg @tsiq-swyx @vcarl @wuweiweiwu @x1c0 @yjcxy12 @zajn

🙌 立即获取

立即试用 Storybook 3.4。如果你已经在用 Storybook,升级只需一分钟。如果你还没用过,现在就开始体验开发 React、React Native、Vue、Angular 和 Polymer 组件 UI 的最佳方式吧!

npm i -g @storybook/cli
cd my-vue-react-rn-angular-or-polymer-project
getstorybook
npm run storybook

如果你对新版本有疑问、问题、鼓励,或者只是想表达喜悦,请在 TwitterSlackGithub 上或在下方评论中联系我们!

最后,要及时了解 Storybook 相关新闻,请在 Medium 上关注我们或在 Twitter 上查看我们。如果你喜欢 Storybook,请为本文点赞并分享,以帮助更多人发现它。

Storybook 团队献上 ❤️。

加入 Storybook 邮件列表

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

7,180位开发者,还在增长中

我们正在招聘!

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

查看职位

热门文章

Storybook:下一章

全职维护和爆发式增长
loading
Michael Shilman

我为什么将全职投入 Storybook 的工作

Storybook 光明而令人兴奋的未来
loading
Norbert de Langen

Storybook 赢得开源奖项

对社区最具影响力的贡献
loading
Norbert de Langen
加入社区
7,180位开发者,还在增长中
关于为什么选择 Storybook组件驱动 UI
文档指南教程更新日志遥测
社区插件参与进来博客
展示探索项目组件词汇表
开源软件
Storybook - Storybook 中文

特别感谢 Netlify CircleCI