返回博客

SvelteKit 的 Storybook

通过我们的新框架零配置支持 SvelteKit 1.0

loading
Jeppe Reinhold
@DrReinhold
最后更新

Svelte 正在迅速成为前端生态系统中的主要框架,为 Web 开发者提供了许多出色的功能。借助 SvelteKit,它还为应用程序提供了强大的元框架。在 Storybook,我们正在投资 Svelte 生态系统,为 Svelte 和 Storybook 用户创造无缝且愉悦的体验。

我很高兴宣布 SvelteKit 框架的 Storybook。它由 Storybook 全新的 Framework API 提供支持,这使得 Storybook 和 Web 框架之间的集成更简单、性能更高。

手动组合 Svelte、Vite 和自定义配置以使 Storybook 表现得像您的 SvelteKit 应用程序的日子已经一去不复返了。@storybook/sveltekit 负责处理所有这些。

但为什么要选择 SvelteKit 呢?

在过去的几年里,Svelte 经历了巨大的增长。最近的 State of JS 调查例证了 Svelte 的受欢迎程度,其总体用户认知度为 94%,稳定保留率为 90%,并且在用户兴趣方面在所有框架中得分最高。无论您如何解释,这些都是令人印象深刻的数字。

我们还看到 Storybook 中对 Svelte 和 SvelteKit 的兴趣日益增长,越来越多的 Svelte 开发者加入了 Storybook Discord,并且来自 Storybook 7.0 beta 的初步数据显示,越来越多的 SvelteKit 用户正在升级。

Chart showing Svelte with the following years and retention numbers: 2019, 88%; 2020, 89%; 2021, 90%; 2022, 90%. For each of those years, it is ranked either 1st or 2nd among its peers, like Solid, Qwik, React, and Vue

介绍 SvelteKit 框架

新的 SvelteKit 框架使您能够以“SvelteKit 方式”在 Storybook 中开发组件和页面。项目配置会自动在 Storybook 中使用,并且 SvelteKit 的许多功能都可以开箱即用。

首先,Storybook 7 会自动将根 Vite 配置中的用户配置合并到 Storybook 的 Vite 配置中。这意味着 vite.config.tssvelte.config.ts 中的任何内容都将自动应用于 Storybook。

您仍然可以使用 storybook/main.js 文件中的 viteFinal 来配置所有这些。这允许您将 Storybook 设置与应用程序设置分开自定义。有关更多信息,请参阅文档

在 Storybook 中使用 SvelteKit 功能

@storybook/sveltekit 的第一个版本还增加了对 SvelteKit 应用程序中最常用的一些功能的支持

  • 支持使用特殊 $lib 别名的导入
  • 组件可以从 $app/environment 读取当前环境信息
  • 支持 $app/paths,因此您可以安全地获取资源路径
  • $app/stores 中的 Store 开箱即用

我们首先关注这组功能,因为它们是大多数 SvelteKit 应用程序的基础。我们将继续致力于此,并计划开发超越基础的功能,使 Storybook 和 SvelteKit 更加紧密地结合在一起。

用于 Storybook 的 SvelteKit 框架是与 Svelte 核心维护者(特别是 Ben McCann)紧密合作构建的,旨在带来尽可能无缝的体验。集成需要在 Storybook 和 SvelteKit 两侧进行更改。事实上,上面列出的大多数功能只有通过更改 SvelteKit 代码库才有可能实现——这些更改有益于与 SvelteKit 集成的整个工具生态系统。

开始使用

@storybook/sveltekit 框架支持 Storybook 7(目前处于 beta 阶段)和 SvelteKit 1.0。

入门很简单。查看完整文档

新项目

在您的 SvelteKit 项目的根目录中运行以下命令,并按照提示操作

npx storybook init

Storybook 将自动检测您的 SvelteKit 项目并安装必要的软件包和配置。

Animated image showing the CLI output when running the `npx storybook@next init` command

现有项目

如果您已经在项目中使用版本 7 之前的 Storybook,请使用以下命令升级 Storybook,并按照提示操作

npx storybook upgrade

如果您的现有项目配置了 Vite 构建器,它将提示您自动将 Storybook 配置和依赖项迁移到新的 @storybook/sveltekit 包。

Screenshot of terminal output showing the details of the `new-frameworks` auto-migration

如果您的现有 Storybook 设置正在使用 Webpack 构建器,则无法自动为您迁移,因为无法将您的 Webpack 配置迁移到 Vite 配置。在这种情况下,请按照手动迁移步骤进行操作。

这仅仅是个开始

@storybook/sveltekit 使在 SvelteKit 项目中开始使用 Storybook 比以往任何时候都更容易,但这仅仅是个开始。我们将继续与 Svelte 团队密切合作,以进一步改进 Storybook 中对 Svelte 和 SvelteKit 的支持。

以下是未来展望

Three lists with titles: Done, containing 'use root Vite config', '$lib', '$app/environment', '$app/paths', '$app/stores'; Upcoming, containing 'Intercept and log $app/navigation calls', 'Interept and log <a> links', 'Mockable $app/stores'; Future, containing 'Server components and data loading', '$app/forms'

特别感谢

如果没有 Ben McCann 的出色工作,SvelteKit 集成是不可能实现的。此外,Ian Van Schooten 在 Vite 构建器方面取得的巨大进展和反馈帮助 SvelteKit 集成成为可能。最后,我们要衷心感谢所有在 alpha 和 beta 阶段测试并报告错误和问题的用户。没有你们,集成不会如此出色。

加入 Storybook 邮件列表

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

6,730位开发者以及更多

我们正在招聘!

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

查看职位

热门文章

样式插件:在 Storybook 中配置样式和主题

使用样式插件配置您的样式工具并为您的 UI 组件提供主题。
loading
Shaun Evening

React Native 的 Storybook (6.5)

性能改进,支持组件故事格式、控件和 Args。以及与 Storybook 核心对齐的新配置文件格式。
loading
Daniel Williams

Storybook 7 文档

新架构、简化的用户体验和现成的文档块
loading
Tom Coleman
加入社区
6,730位开发者以及更多
为什么为什么选择 Storybook组件驱动的 UI
文档指南教程更新日志遥测
社区插件参与其中博客
案例展示探索项目组件词汇表
开源软件
Storybook - Storybook 中文

特别感谢 Netlify CircleCI