storybook配合vite + react生成组件文档

storybook配合vite + react生成组件文档

直接命令行初始化项目

javascript 复制代码
npm create vite com --template react-ts

并删除多余文件,并创建必要文件夹

建立一个简单的组件Button在package中

javascript 复制代码
interface propsTypes {
  label: string
}
const Button = (props: propsTypes) => {
  const {label} = props
  return(
    <button>{label}</button>
  )
}
export default Button

加入storybook各种配置

javascript 复制代码
npx storybook@latest init

可以直接通过storybook的命令生成适应项目的配置。并且会自动给你生成一个 .storybook的配置文件夹。其中含有入口文件main.ts和全局配置文件preview.ts

javascript 复制代码
// main.ts
import type { StorybookConfig } from "@storybook/react-vite";

const config: StorybookConfig = {
  // 指向的是组件文档的地址
  stories: ["../src/package/**/*.stories.@(js|jsx|mjs|ts|tsx)"],
  // 添加相对应的插件,具体根据组件库所需要的配置
  addons: [
    "@storybook/addon-links",
    "@storybook/addon-essentials",
    "@storybook/addon-onboarding",
    "@storybook/addon-interactions",
  ],
  // 直接指向storybook所要支持的框架
  framework: {
    name: "@storybook/react-vite",
    options: {},
  },
  // 自动文档的各种配置
  docs: {
    autodocs: "tag",
  },
};
export default config;
javascript 复制代码
// preview.ts
import type { Preview } from "@storybook/react";

const preview: Preview = {
  // 配置各种全局的样式
  parameters: {
    actions: { argTypesRegex: "^on[A-Z].*" },
    controls: {
      matchers: {
        color: /(background|color)$/i,
        date: /Date$/i,
      },
    },
    backgrounds: {
      default: 'gray',
      values: [
        {
          name: 'white',
          value: '#fff',
        },
        {
          name: 'gray',
          value: '#f0f0f0',
        },
        {
          name: 'twitter',
          value: '#00aced',
        },
        {
          name: 'facebook',
          value: '#3b5998',
        },
      ],
    },
  },
};

export default preview;

添加Button的文档

在package/Button下添加 index.stories.ts文件

javascript 复制代码
import type { Meta, StoryObj } from '@storybook/react';

import Button from "./index";
import './index.less'

const meta = {
  title: 'Example/Button',
  component: Button,
  // 这里也可以设置文档界面的各种配置
  parameters: {
   layout: 'centered',
  },
  tags: ['autodocs'],
} satisfies Meta<typeof Button>;

export default meta;

// 会直接生成文档组件的类型
type Story = StoryObj<typeof meta>;

export const Template: Story = {
  // 这里可以根据Button的propsType进行入参配置
  args: {
    label: 'DetailCard',
  },
};

最后执行启动命令就可以看到button的文档了

javascript 复制代码
 "storybook": "storybook dev -p 6006",
相关推荐
AICoder码农王17 分钟前
Vitest 实战:从一个真实项目看懂测试套件
前端·前端框架
律宏阔26 分钟前
Electron Forge 在 macOS M4 打包踩坑:Node.js 26 导致 make 异常中断
前端
木木爱研究29 分钟前
elpis-里程碑四-基于Vue完成动态组件库建设
前端·后端
深念Y32 分钟前
Nuxt 项目 Docker 构建:从 pnpm+node 迁移到全 bun
java·前端·docker
qq_4260039633 分钟前
UI自动化元素定位不到解决方案
前端·pycharm·自动化
EthanChou202039 分钟前
AES67协议笔记
前端·笔记·es6
马优晨41 分钟前
pom.xml 中 jquery webjars 依赖解释
xml·前端·jquery·jquery webjars·webjars依赖
里欧跑得慢1 小时前
AI 驱动的 UI 国际化方案自动适配:从单一语言到多语言布局的智能转换
前端·css·flutter·web
DolitD1 小时前
云流技术深度剖析:单服务器下如何实现3D应用的多实例并发?
java·服务器·前端·3d·云原生·云计算
芦柑4641 小时前
画布和3D导演台工具:短剧分镜从素材整理到空间预演的完整链路
服务器·前端·数据库