返回博客

Storybook 7.5

Next.js 改进,增强 Angular 支持,以及 React TypeScript 项目启动速度提升 2.2 倍

loading
Michael Shilman
@mshilman
最近更新

Storybook 是 UI 工作坊环境的黄金标准。行业内的团队,如 across the industry 的团队,如 Monday.com、The Guardian、Intuit 等等都在使用它来开发、文档化和测试 UI。

今天,我们非常激动地推出 Storybook 的最新版本:Storybook 7.5!它带来了一系列增强 Storybook 体验的新功能。

让我们深入了解一下!

  • ⚡️ Vite 5 和 Lit 3.0 支持
  • 💨 React TypeScript 项目启动速度提升 2.2 倍
  • 👻 storiesOfstoryStoreV6 已正式弃用
  • ✨ 许多 Angular 改进:argsToTemplate,新的 CLI 调试选项,支持独立指令等。
  • 🀄 支持为 Next.js 重命名字体导入
  • 🔨 修复 Webpack 5 构建错误未被传播的问题

Vite 5 支持

The Storybook and Vite logos, connected like jigsaw puzzle pieces.

Storybook 7.0 的主要亮点之一是正式引入了 对 Vite 的零配置支持。Vite 因其极具竞争力的速度,迅速成长为生态系统中最受欢迎的构建工具之一。

在 Storybook 7.5 中,我们正在为集成 Vite 的下一个版本:Vite 5.0 奠定基础!Storybook 7.5 包括 Vite 5 作为对等依赖项,并动态导入所有 Vite 函数以强制使用 ES 模块(因为 Vite 5 弃用了 CJS 方法)。

React TypeScript 项目启动速度提升 2.2 倍

Storybook 7.5 将 react-docgen 升级到版本 6。此更改是使 react-docgen 成为 Storybook 8 中自动生成控件的默认设置的前奏。

此升级显著改进了 Storybook 对 TypeScript 类型的处理,并大幅缩短了大型 React Storybook 的启动时间。例如:react-docgen 6the Mealdrop project (我们将其用于许多测试)的启动时间从 8.9 秒缩短到 4.0 秒!

storiesOfstoryStoreV6 已正式弃用

storiesOf 是我们最初用于创建 Storybook stories 的 API。在 2019 年(Storybook 5.2),它被 组件故事格式 (CSF) 取代——一个更简单、可移植且性能更高的后继者。

自从引入 CSF 以来,新版本的 Storybook 一直在继续支持 storiesOf 。这给了 CSF 成熟的时间,并为 Storybook 用户提供了进行迁移的时间。

现在已经四年过去了。CSF 正处于第三次迭代,并且几乎被所有 Storybook 项目使用。因此,我们将此刻视为正式弃用我们对 storiesOfstoryStoreV6 支持的时刻。

CSF – Auto-migrate with codemod

如果您仍在使用 storiesOf,您可以使用以下两个脚本开始迁移

# 1. Convert storiesOf to CSF
npx storybook@latest migrate storiesof-to-csf --glob="**/*.stories.tsx" --parser=tsx

# 2. Convert CSF 2 to CSF 3
npx storybook@latest migrate csf-2-to-3 --glob="**/*.stories.tsx" --parser=tsx

了解有关弃用以及如何在 CSF 中继续动态生成 stories 的更多信息.

改进的 Next.js 支持

我们对 Storybook 如何与 Next.js 协同工作进行了一些改进。

首先,Next.js 用户现在能够将来自 next/font/ 的别名导入语句导入到 Storybook 中。

// Place this import in any relevant file – even in your stories

import { Inter as FontSans } from 'next/font/google'

export const fontSans = FontSans({
  subsets: ['latin'],
  variable: '--font-sans'
})

我们还修复了 next/font 在 Windows 机器上无法正常工作的问题。

最后,我们为 Next.js Canary 版本设置了监控。这会自动检查 Storybook 是否与最新的 Next.js Canary 版本一起运行,这意味着我们可以更快地发现错误并进行修复!

Angular 改进:argsToTemplate

Storybook 7.5 为 Angular 引入了 argsToTemplate 功能,旨在简化 Angular 组件模板的生成。此功能简化了 Storybook stories 中属性和事件绑定的处理。

argsToTemplate 的一个显著优点是,它解决了 Angular 如何处理属性绑定中未定义值的问题,这个问题经常导致误解。有了这个实用程序,现在 Storybook 控件获得了增强的支持,确保它们更好地与 Angular 的标准行为保持一致。

尝试 argsToTemplate

在您的 story 中,将 argsToTemplate 集成到模板字符串中,如下所示

import { argsToTemplate } from '@storybook/angular';

export const Default: Story = {
  render: (args) => ({
    props: args,
    template: `<app-template ${argsToTemplate(args)}></app-template>`,
  }),
};

您的参数将正确映射到属性和事件绑定!

其他 Angular 亮点

  • 为 Angular Storybook 构建器添加了更多构建器选项:debugWebpack、webpackStatsJson 和 previewUrl (#24388)
  • 现在可以在 Storybook 中使用独立指令 (#24448)
  • 添加了 zone.js v0.14.x 支持 (#24367)

修复 Webpack 5 构建错误未被传播的问题

在 Storybook 7 中,当 Storybook 处于开发模式时,Webpack 编译错误不会传播到终端。这在 Storybook 6.5 中是正常的。由于对 webpack-dev-middleware 库所做的更改,它停止了工作。

Storybook 7.5 修复了该错误,并且该行为现已恢复。这意味着您现在可能会看到更多以前没有的警告。修复它们可能有助于提高 Storybook 的性能!

如果您想自定义 Storybook 提供的日志级别,可以在您的 logLevel 选项中配置 storybook/main.ts 文件。

Lit 3.0 支持

最后,Storybook 7.5 还带来了对 Lit 3.0 的支持!

Lit 是开发 Web 组件的领先库之一。新的 Lit 3.0 是 Lit 团队自 2021 年初以来的首次重大发布。

为了在您的 Lit 3 项目中继续正常使用 Storybook,请立即升级到 Storybook 7.5!

升级到 Storybook 7.5

要将您的 Storybook 升级到 7.5,请运行

# Upgrade your Storybook to 7.5
npx storybook@latest upgrade

有关从早于 Storybook 7 的 Storybook 版本升级的指南,请查看 Storybook 7 迁移指南

或者,对于全新安装,请使用以下命令将 Storybook 引导到现有应用程序中

# Install a fresh Storybook
npx storybook@latest init

致谢

Storybook 由超过 1,000 名社区贡献者和 Chromatic 的核心 Storybook 团队共同构建。非常感谢所有为本次发布做出贡献的人!包括

@almoghaimo, @anneau, @arup1221, @atreay, @bkfarnsworth, @bryanjtc, @cdedreuille, @chocoscoding, @decherneyge, @greut, @ianvs, @integrayshaun, @irangarcia, @j3rem1e, @johnhunter, @jonniebigodes, @jonthenerd, @jreinhold, @json-betsec, @julien-deramond, @kasperpeulen, @kbazilio, @kylegach, @legnaleurc, @martinnabhan, @masaya48, @mastrzyz, @mrzillagold, @natehouk, @ndelangen, @nsheaps, @omahs, @oruman, @osnoser1, @pure-js, @rohanpoojary1107, @roottool, @seriouz, @shilman, @sidnioulz, @stropitek, @tmeasday, @valentinpalkovic, @vanessayuenn, @wesgro, @yannbf, @yoshi2no, @yossisaadi

参与进来

有很多方法可以参与到 Storybook 社区中!

  • 如果您有兴趣为 Storybook 做出贡献,请查看 GitHub 上的 Storybook – 创建一个 issue,或提交一个 pull request。
  • Discord 中与我们聊天,分享您的技能,并帮助其他用户学习 Storybook
  • TwitterLinkedIn 或通过我们的邮件列表,及时了解 Storybook 的最新消息

加入 Storybook 邮件列表

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

6,730位开发者及更多

我们正在招聘!

加入 Storybook 和 Chromatic 背后的团队。构建被成千上万开发者在生产环境中使用的工具。远程优先。

查看职位

热门文章

Netlify 如何在短短 6 周内重塑其应用品牌

使用 Storybook 和 Chromatic 进行品牌重塑的大师班
loading
Joe Vaughan

Chromatic 可视化测试插件进入私有 Beta 阶段

通过一键测试调试 stories 中的视觉变化
loading
Dominic Nguyen

介绍 Theme Switcher 插件

2023 年 9 月 Storybook 更新
loading
Joe Vaughan
加入社区
6,730位开发者及更多
为什么为什么选择 Storybook组件驱动的 UI
文档指南教程更新日志遥测
社区插件参与进来博客
案例展示探索项目组件词汇表
开源软件
Storybook - Storybook 中文

特别感谢 Netlify CircleCI