当前位置:首页 > React

如何快速构建react组件库

2026-01-25 01:59:27React

快速构建 React 组件库的方法

使用脚手架工具初始化项目

推荐使用 create-react-appVite 快速初始化项目。以 Vite 为例:

npm create vite@latest my-component-library --template react
cd my-component-library

配置组件库结构

src 目录下创建 components 文件夹,每个组件独立成文件夹,包含以下文件:

  • ComponentName.tsx(组件逻辑)
  • ComponentName.stories.tsx(Storybook 文档)
  • index.ts(导出组件)

示例目录结构:

src/
  components/
    Button/
      Button.tsx
      Button.stories.tsx
      index.ts

设置样式方案

可选择 CSS Modules、Styled-components 或 TailwindCSS。以 CSS Modules 为例:

// Button.tsx
import styles from './Button.module.css';

const Button = ({ children }) => {
  return <button className={styles.button}>{children}</button>;
};

配置 Storybook 文档

安装 Storybook:

npx storybook@latest init

修改 .storybook/main.js 扫描组件:

module.exports = {
  stories: ['../src/components//*.stories.tsx'],
};

配置打包工具

使用 Rollup 或 Vite 打包组件库。以 Rollup 为例:

npm install rollup @rollup/plugin-node-resolve @rollup/plugin-commonjs @rollup/plugin-typescript --save-dev

创建 rollup.config.js

import commonjs from '@rollup/plugin-commonjs';
import resolve from '@rollup/plugin-node-resolve';
import typescript from '@rollup/plugin-typescript';

export default {
  input: 'src/index.ts',
  output: {
    dir: 'dist',
    format: 'esm',
  },
  plugins: [resolve(), commonjs(), typescript()],
};

导出组件库

src/index.ts 中集中导出所有组件:

export { default as Button } from './components/Button';

发布到 npm

  1. package.json 中设置:
    {
    "name": "my-component-library",
    "version": "1.0.0",
    "main": "dist/index.js",
    "module": "dist/index.esm.js",
    "types": "dist/index.d.ts",
    "files": ["dist"]
    }
  2. 执行发布:
    npm login
    npm publish

维护与更新

  • 使用 Changesets 管理版本号
  • 配置 GitHub Actions 自动化测试和发布
  • 通过 Storybook 持续更新文档

如何快速构建react组件库

标签: 组件快速
分享给朋友:

相关文章

vue动态组件实现

vue动态组件实现

Vue 动态组件实现方法 使用 component 标签与 is 属性 通过 Vue 内置的 <component> 标签和 is 属性实现动态组件切换。is 的值可以是已注册的组件名或导…

vue如何实现目录组件

vue如何实现目录组件

实现目录组件的基本思路 在Vue中实现目录组件通常需要结合页面内容的结构化数据(如标题层级),通过动态渲染生成可交互的目录。核心步骤包括提取标题、生成目录结构、实现滚动联动等。 提取标题信息 通过d…

vue实现穿梭框树组件

vue实现穿梭框树组件

Vue 穿梭框树组件实现 穿梭框树组件通常结合了树形结构和穿梭框功能,允许用户在左右两栏之间移动树节点数据。以下是基于 Vue 的实现方案: 核心功能设计 数据结构 树形数据通常采用嵌套结构,例如…

uniapp如何将底部导航组件化

uniapp如何将底部导航组件化

在 uniapp 中将底部导航组件化 将底部导航组件化可以提高代码复用性和维护性。以下是具体实现方法: 创建自定义底部导航组件 新建一个组件文件,例如 tab-bar.vue,放置在 comp…

vue VUE实现日历组件功能

vue VUE实现日历组件功能

Vue 日历组件实现方法 基础日历结构 使用Vue的模板语法构建日历的HTML结构,通常包含头部(年月显示、切换按钮)和日历表格(星期标题和日期格子)。 <template> <…

vue实现折叠组件

vue实现折叠组件

实现折叠组件的基本思路 在Vue中实现折叠组件通常需要利用动态绑定和条件渲染。核心是通过控制一个布尔值状态来决定内容是否显示,并添加过渡动画提升用户体验。 基础实现方法 使用v-show或v-if…