Storybook 是一个专门用于组件调试的工具,它围绕着组件开发提供了:
在使用 Storybook 时,难免会遇到各种配置问题,需要手动配置 Babel 插件,手动配置 Webpack 去支持 less,sass 等。 Modern.js 集成了 Storybook,这对于我们开发 Storybook 项目来说极大地简化了配置工作。
可以直接使用如下命令开启 Storybook 功能。
该命令会创建好 Storybook 常用的模版,包括
.storybook
,以及默认配置文件 .storybook/main.ts
事实上,Modern.js Module 是基于 esbuild 实现的,而 Storybook 使用 Webpack 作为默认构建工具,二者的配置无法完全兼容, 所以这里我们推荐先对组件进行构建,然后在 stories 里引入组件产物。
引入组件产物的方式非常简单,假设你的模块导出了一个 Button 组件,那么在 stories 里可以这样使用:
如果想要更新组件,则可以在启动 Storybook 前启动监听模式的构建:
在开发过程中,可能会遇到无法实时获得类型定义的情况。因为只有当保存代码后,产物目录下的类型文件才会更新。此时:
对于 pnpm
的项目,可以按照下面的内容对 package.json
进行修改:
关于 pnpm 的
publishConfig
的使用,可以阅读下面这个链接。
而对于 npm 和 Yarn 的项目,则只能通过手动的方式在开发阶段和发布阶段对 package.json
的 types
的值进行修改。
Rspack 构建速度非常快,只需要如下配置即可使用 Rspack 作为构建工具。
注意上面配置中,更改了 reactDocgen 配置,因为 Rspack 目前还不支持 @storybook/react-docgen-typescript-plugin。
在 .storybook/main.js
中包含一些独有的配置。
'webpack' | 'rspack'
webpack
指定底层打包工具使用 Webpack 还是 Rspack。
BuilderConfig
undefined
Modern.js 的 Storybook 构建能力由 Rsbuild 提供,可通过 builderConfig 修改 Rsbuild 构建配置。
@modern-js/storybook 代理了部分 storybook cli 的命令。
启动 Storybook,查看详情
对 Storybook 进行生产环境构建,查看详情
配置文件中除了 Rsbuild 配置还包含一个额外的字段,builderPlugins,方便使用 Rsbuild 插件,例如启用 SWC 编译。
我们对于两个版本的支持方式不同,因此如果你是从 V6 迁移至 V7 的用户,我们希望你也按上述方式使用 V7,同时做以下调整:
root/config/storybook/main.(j|t)s
里的自定义配置(如果有)迁移到新的 root/.storybook/main.(j|t)s
。@storybook/addon-*
系列依赖(如果有)到 7 版本,并删除 @modern-js/plugin-storybook
依赖。edenx dev storybook
和 edenx build --platform
命令删除,如果习惯了原来的 pnpm run dev
的调用方式,可以
将其替换成 storybook dev -p 6006
和 storybook build
。@modern-js/plugin-storybook
插件的注册。从 2.40.0
版本开始,@modern-js/plugin-storybook
将停止迭代。建议使用 V7 版本。
如果你的 @modern-js/module-tools
版本低于 2.40.0
,可以按照以下方式使用 Storybook V6:
可以直接使用如下命令开启 Storybook 功能。
该命令会创建好 Storybook 常用的模版,包括
pnpm dev storybook
等相关脚本。Storybook 官方通过一个名为 .storybook
的文件夹来进行项目配置,其中包含各种配置文件。在 Modern.js Module 中,可以在项目的 config/storybook
目录下增加 Storybook 配置文件。
关于 Storybook 各种配置文件的使用方式,可以查看下面的链接:
不过这在模块项目里使用时存在一些限制:
main.js
文件里修改 stories
配置。main.js
文件里修改 webpackFinal
和 babel
配置。除了可以对组件或者普通的模块进行 Storybook 调试,还可以通过下面的命令来执行 Storybook 的构建任务。
构建完成后,可以在 dist/storybook-static
目录看到构建产物文件。