文件
Storybook 文件

樣式和 CSS

在 Web 應用程式中包含 CSS 有許多方法,對應地,在 Storybook 中包含 CSS 也有許多方法。通常,最好嘗試在 Storybook 的設定中複製應用程式使用樣式的方式。

CSS

Storybook 支援以幾種不同的方式匯入 CSS 檔案。Storybook 會將這些標籤注入到渲染元件的預覽 iframe 中,而不是 Storybook 管理 UI。匯入 CSS 的最佳方式取決於專案的設定和偏好。

所有 Storybook 都預先設定為可識別 CSS 檔案的匯入。若要為所有 Stories 新增全域 CSS,請在 .storybook/preview.ts 中匯入。這些檔案將會受到 HMR 的影響,因此您可以查看變更,而無需重新啟動 Storybook 伺服器。

.storybook/preview.ts
// Replace your-framework with the framework you are using (e.g., react, vue3)
import { Preview } from '@storybook/your-framework';
 
import '../src/styles/global.css';
 
const preview: Preview = {
  parameters: {},
};
 
export default preview;

如果您的元件檔案匯入它們的 CSS 檔案,這也會運作。但是,如果您使用 Sass 或 Postcss 等 CSS 處理器工具,您可能需要更多設定。

包含靜態 CSS

如果您有一個想要包含在所有 Stories 中的全域 CSS 檔案,您可以將它匯入 .storybook/preview-head.html。但是,這些檔案不會受到 HMR 的影響,因此您需要重新啟動 Storybook 伺服器才能查看變更。

{/* .storybook/preview-head.html */}
 
{/* Loads a font from a CDN */}
<link rel="preconnect" href="https://fonts.googleapis.com" />
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
<link
  href="https://fonts.googleapis.com/css2?family=Inter:wght@100..900&display=swap"
  rel="stylesheet"
/>
{/* Load your CSS file */}
<link rel="stylesheet" href="path/to/your/styles.css" />

CSS 模組

Vite

Vite 預設支援 CSS 模組。如果您在 vite.config.js 中自訂了 CSS 模組設定,這也會自動套用至您的 Storybook。深入瞭解 Vite 的 CSS 模組支援

Webpack

使用 @storybook/nextjs 嗎?

Storybook 會重新建立您的 Next.js 設定,因此您可以在 Stories 中使用 CSS 模組,而無需額外設定。

如果您使用 Webpack 並且想要使用 CSS 模組,則需要一些額外的設定。我們建議安裝 @storybook/addon-styling-webpack 來協助您設定這些工具。

PostCSS
Vite

Vite 預設即支援 PostCSS。如果您在 vite.config.js 中自訂了 PostCSS 設定,這將會自動應用到您的 Storybook 中。請閱讀更多關於 Vite 的 PostCSS 支援

Webpack

使用 @storybook/nextjs 嗎?

Storybook 會重新建立您的 Next.js 設定,因此您可以在 stories 中使用 PostCSS,而無需額外設定。

如果您使用 Webpack 並想使用 PostCSS,您需要一些額外的設定。我們建議安裝 @storybook/addon-styling-webpack 來協助您設定這些工具。

CSS 預處理器

Vite

Vite 預設即支援 Sass、Less 和 Stylus。請閱讀更多關於 Vite 的 CSS 預處理器支援

Webpack

使用 @storybook/nextjs 嗎?

Storybook 會重新建立您的 Next.js 設定,因此您可以在 stories 中使用 Sass,而無需額外設定。

如果您使用 Webpack 並想使用 Sass 或 Less,您需要一些額外的設定。我們建議安裝 @storybook/addon-styling-webpack 來協助您設定這些工具。或者,如果您願意,您可以自行客製化 Storybook 的 Webpack 設定,以包含適當的 loader。

CSS-in-JS

CSS-in-JS 函式庫的設計是使用基本的 JavaScript,它們通常在 Storybook 中運作,無需額外設定。某些函式庫會期望元件在特定的渲染「情境」中渲染(例如,提供主題),這可以使用 @storybook/addon-themeswithThemeFromJSXProvider 裝飾器 來實現。

新增網頁字型

.storybook/preview-head.html

如果需要網頁字型可用,您可能需要在 .storybook/preview-head.html 檔案中新增一些程式碼。如果可以的話,我們建議將任何資源包含在您的 Storybook 中,在這種情況下,您可能需要設定靜態檔案位置

.storybook/preview.ts

如果您使用類似 fontsource 的服務來取得字型,您可以在 .storybook/preview.ts 檔案中匯入所需的 css 檔案。