在 Angular 和 Vite 中使用 Storybook
Storybook 是一个用于独立构建 UI 组件和页面的前端工作室。
默认情况下,Angular 和 Storybook 使用 Webpack 构建和提供 Storybook 应用。
本指南将带你了解使用 AnalogJS Storybook 集成将 Storybook 切换为使用 Angular 和 Vite 进行构建和服务的流程。该包可应用于任何使用 Storybook 的 Angular 项目。
这是一个社区集成,并非由 Storybook 团队维护。如果你遇到问题,请在我们的 GitHub 仓库中提交 issue。
兼容性指南
用于 Angular 和 Vite 的 AnalogJS Storybook 集成支持多个版本的 Storybook。请参阅下表,根据项目依赖项安装相应的版本。
| Storybook 版本 | Analog 版本 |
|---|---|
| ^10.0.0 | ^2.0.0 |
| ^9.0.0 | ^1.22.0 |
| ^8.6.0 | ^1.22.0 |
设置 Storybook
如果你还没有设置 Storybook,请运行以下命令为你的项目初始化 Storybook:
npx storybook@latest init
按照提供的提示操作,并提交你的更改。
安装 Storybook 包
安装 Angular 和 Vite 的 Storybook 集成。根据你偏好的包管理器,运行以下命令之一:
- npm
- yarn
- pnpm
- bun
npm install @analogjs/storybook-angular --save-dev
yarn add @analogjs/storybook-angular --dev
pnpm install @analogjs/storybook-angular -w --save-dev
bun install @analogjs/storybook-angular --save-dev
配置 Storybook
更新 .storybook/main.ts 文件以使用 StorybookConfig 类型。同时更新 framework 以使用 @analogjs/storybook-angular 包。
import { StorybookConfig } from '@analogjs/storybook-angular';
const config: StorybookConfig = {
// 其他配置, addons 等
framework: {
name: '@analogjs/storybook-angular',
options: {},
},
staticDirs: ['../public'],
};
export default config;
如果存在现有的 webpackFinal 配置函数,请将其移除。
接下来,更新 angular.json 或 project.json 中的 Storybook 目标。
"storybook": {
"builder": "@analogjs/storybook-angular:start-storybook",
},
"build-storybook": {
"builder": "@analogjs/storybook-angular:build-storybook"
}
移除任何 webpack 特定选项并移除 browserTarget 选项。
将 /storybook-static 文件夹添加到 .gitignore 文件中。
设置 CSS
要注册全局样式,请将其添加到 angular.json 或 project.json 中的 @analogjs/storybook-angular 构建器选项中。
"storybook": {
"builder": "@analogjs/storybook-angular:start-storybook",
"options": {
// ... 其他选项
"styles": [
"src/styles.css"
],
"stylePreprocessorOptions": {
"loadPaths": ["libs/my-lib/styles"]
}
}
},
"build-storybook": {
"builder": "@analogjs/storybook-angular:build-storybook",
"options": {
// ... 其他选项
"styles": [
"src/styles.css"
],
"stylePreprocessorOptions": {
"loadPaths": ["libs/my-lib/styles"]
}
}
}
启用 Zoneless 变更检测
要在 Storybook 中使用 Zoneless 变更检测,请在 angular.json 或 project.json 中的 @analogjs/storybook-angular 构建器选项中添加 experimentalZoneless 标志。
- angular.json
- project.json
"storybook": {
"builder": "@analogjs/storybook-angular:start-storybook",
"options": {
// ... 其他选项
"experimentalZoneless": true
}
},
"build-storybook": {
"builder": "@analogjs/storybook-angular:build-storybook",
"options": {
// ... 其他选项
"experimentalZoneless": true
}
}
"storybook": {
"executor": "@analogjs/storybook-angular:start-storybook",
"options": {
// ... 其他选项
"configDir": "path/to/.storybook",
"experimentalZoneless": true,
"compodoc": false
}
},
"build-storybook": {
"executor": "@analogjs/storybook-angular:build-storybook",
"options": {
// ... 其他选项
"configDir": "path/to/.storybook",
"experimentalZoneless": true,
"compodoc": false
}
}
Zoneless 变更检测是 Angular v21 开始的新项目的默认设置。
设置静态资产
静态资产在 .storybook/main.ts 文件中使用 staticDirs 数组进行配置。
下面的示例展示了如何添加相对于 .storybook/main.ts 文件的 src/public 中的 public 目录。
import { StorybookConfig } from '@analogjs/storybook-angular';
const config: StorybookConfig = {
// 其他配置, addons 等
framework: {
name: '@analogjs/storybook-angular',
options: {},
},
staticDirs: ['../public'],
};
export default config;
有关更多信息,请参阅 Storybook 关于图像和资产的文档。
运行 Storybook
运行启动开发服务器的命令。
npm run storybook
构建 Storybook
运行构建 storybook 的命令。
npm run build-storybook
使用 TypeScript 配置路径别名
如果你在 tsconfig.json 中使用 paths,可以在 vite.config.ts 中添加对这些别名的支持。