样式和 CSS
在 Web 应用中包含 CSS 的方法有很多,相应地,在 Storybook 中包含 CSS 的方法也很多。通常,最好尝试在 Storybook 的配置中复制应用在样式方面的做法。
CSS
Storybook 支持通过几种不同的方式导入 CSS 文件。Storybook 会将这些标签注入到你的组件渲染的预览 iframe 中,而不是 Storybook Manager UI。导入 CSS 的最佳方式取决于你的项目的配置和你的偏好。
导入捆绑的 CSS (推荐)
所有 Storybook 都预先配置为识别 CSS 文件的导入。要为所有故事添加全局 CSS,请在 .storybook/preview.ts
中导入它。这些文件将受 HMR 影响,因此你可以看到你的更改,而无需重启 Storybook 服务器。
如果你的组件文件导入它们的 CSS 文件,这也将有效。但是,如果你正在使用 Sass 或 Postcss 等 CSS 预处理器工具,你可能需要更多配置。
包含静态 CSS
如果你有一个全局 CSS 文件,你想在所有故事中包含它,你可以在 .storybook/preview-head.html
中导入它。但是,这些文件将不受 HMR 影响,因此你需要重启 Storybook 服务器才能看到你的更改。
CSS 模块
Vite
Vite 原生支持 CSS 模块。如果你在 vite.config.js
中自定义了 CSS 模块配置,这也会自动应用于你的 Storybook。了解更多关于 Vite 的 CSS 模块支持。
Webpack
@storybook/nextjs
吗?Storybook 会重新创建你的 Next.js 配置,因此你可以在故事中使用 CSS 模块,而无需任何额外配置。
如果你正在使用 Webpack 并且想要使用 CSS 模块,你需要一些额外的配置。我们建议安装 @storybook/addon-styling-webpack
来帮助你配置这些工具。
PostCSS
Vite
Vite 默认支持 PostCSS。如果您在 vite.config.js
中自定义了 PostCSS 配置,它也会自动应用到您的 Storybook 中。了解更多关于 Vite 的 PostCSS 支持。
Webpack
@storybook/nextjs
吗?Storybook 会重新创建您的 Next.js 配置,因此您可以在您的故事中使用 PostCSS,无需任何额外的配置。
如果您使用的是 Webpack 并希望使用 PostCSS,您需要进行一些额外的配置。我们建议您安装 @storybook/addon-styling-webpack
来帮助您配置这些工具。
CSS 预处理器
Vite
Vite 默认支持 Sass、Less 和 Stylus。了解更多关于 Vite 的 CSS 预处理器支持。
Webpack
@storybook/nextjs
吗?Storybook 会重新创建您的 Next.js 配置,因此您可以在您的故事中使用 Sass,无需任何额外的配置。
如果您使用的是 Webpack 并希望使用 Sass 或 less,您需要进行一些额外的配置。我们建议您安装 @storybook/addon-styling-webpack
来帮助您配置这些工具。或者,如果您愿意,您可以自定义 Storybook 的 webpack 配置 以包含相应的加载器。
CSS-in-JS
CSS-in-JS 库被设计为使用基本的 JavaScript,并且它们通常可以在 Storybook 中工作,无需任何额外的配置。一些库期望组件在特定的渲染“上下文”中渲染(例如,提供主题),这可以通过 @storybook/addon-themes
的 withThemeFromJSXProvider
装饰器 来实现。
添加网页字体
.storybook/preview-head.html
如果您需要使用网页字体,您可能需要在 .storybook/preview-head.html
文件中添加一些代码。我们建议您尽可能地将所有资源与 Storybook 一起包含,在这种情况下,您可能希望配置 静态文件位置。
.storybook/preview.ts
如果您使用的是 fontsource
等工具来管理您的字体,您可以在 .storybook/preview.ts
文件中导入所需的 css 文件。