前言

公司业务积累了一定程度,需要搭建自己的组件库,有了组件库,整个团队开发效率会提高恨多。

做组件库需要提供开发调试环境,和组件文档的展示,调研了几个比较主流的方案,如下:

  • docz 配置简单,功能相对来说也较完善。我们现在项目是用的umi框架,正好官方也提供了开发库的脚手架,也集成了docz,因此我们决定采用它来开发我们的组件库。
  • storybook 功能比较全面,支持自定义webpack配置等特性
  • docsifyjs 写文档比较友好,对vue支持比较好,react 用的不是特别多

组件库搭建

  • monorepo(多包仓库)

    现在比较流行的是monorepo(多包仓库),我们采用lerna框架去管理开发项目。lerna我认为最主要的功能给我们提供了包的版本管理,快速发布npm等。像鼎鼎大名的babel就是采用这种方式来管理。lerna 初始化项目大家可以看下官方文档,要注意它的两种模式

    • Fixed/Locked(锁定,固定模式) 默认初始化就是使用的这种方式。此方式包升级相对应的所有包都会升级成新版本
    • Independent (独立模式) 支持单独包的改动升级版本

    lerna 项目文件目录描述

    ├── README.md              项目介绍
    ├── lerna.json lerna 配置文件
    ├── package.json
    ├── packages 包目录
    │ └── ***-component 具体包文件
    └── yarn.lock
  • 创建componet组件库

    我们在packages 文件目录下创建我们的组件库,可以起名为 ***-component, 接下来就是初始化项目,可以用umi提供的脚手架去创建,根据文档创建即可。我们介绍下文件目录的用途

    • 框架目录

      ├── bcomponents      存放我们的业务组件
      ├── components 存放基础组件
      │ ├── resource 资源组件
      │ └── tag 标签组件
      ├── index.js 入口文件
      ├── style 样式文件
      │ ├── index.js
      │ ├── index.less 入口样式
      │ ├── minxins less minxins
      │ └── themes 默认主题
      ├── utils 工具目录
      │ └── utils.js 工具类
    • 组件目录

      ├── resource                  resource组件文件夹
      │ ├── index.js 入口文件
      │ ├── index.less less描述文件
      │ ├── index.mdx 文档和案例
      │ ├── resource.js 组件内容
      │ ├── resourceContext.js 组件内容
      │ └── resourceGroup.js 组件内容
      └── tag tag组件
      ├── index.js 入口文件
      └── index.mdx 文档和案例
  • 开发,打包,发布

    我们介绍了框架目录,大家可以按约定去开发。由于 umi-plugin-library 目前开发还不是完善,文档也不是很全。通过查看源码总结了一下命令,包含开发,打包,发布到github pages 上.

    • yarn dev 启动开发环境
    • yarn build:doc 构建文档
    • yarn deploy:doc 构建文档并发布到github pages
    • yarn build 构建组件产物

成果展示

结束语

我简单的介绍了组建搭建,搭建的过程中还有许多小细节需要我们注意。我把项目放到了github上,大家有兴趣可以去查看

React 组件库框架搭建的更多相关文章

  1. 七个不可错过的React组件库与开发框架

    React是如今最火爆的前端技术,而React最棒的一个特点就是有大量功能丰富的组件库和开发框架可用.从按钮到卷轴到工具条,应有尽有,而且这些组件可以各行其是,也可以组装成复杂的UI,你也可以把UI分 ...

  2. 如何快速构建React组件库

    前言 俗话说:"麻雀虽小,五脏俱全",搭建一个组件库,知之非难,行之不易,涉及到的技术方方面面,犹如海面风平浪静,实则暗礁险滩,处处惊险- 目前团队内已经有较为成熟的 Vue 技术 ...

  3. Vue3 企业级优雅实战 - 组件库框架 - 1 搭建 pnpm monorepo

    前两篇文章分享了基于 vite3 vue3 的组件库基础工程 vue3-component-library-archetype 和用于快速创建该工程的工具 yyg-cli,但在中大型的企业级项目中,通 ...

  4. Vue3 企业级优雅实战 - 组件库框架 - 3 搭建组件库开发环境

    前文已经初始化了 workspace-root,从本文开始就需要依次搭建组件库.example.文档.cli.本文内容是搭建 组件库的开发环境. 1 packages 目录 前面在项目根目录下创建了 ...

  5. React组件库集锦及学习视频

    [转载]https://www.rails365.net/articles/react-zui-hao-de-ui-zu-jian-ku-ji-jin 这里有一篇讨论,说了哪个才是 React 最好的 ...

  6. Vue3 企业级优雅实战 - 组件库框架 - 2 初始化 workspace-root

    上文已经搭建了 pnpm + monorepo 的基础环境,本文对 workspace-root 进行初始化配置,包括:通用配置文件.公共依赖.ESLint. 1 通用配置文件 在项目 根目录 下添加 ...

  7. React组件库

    图表组件库:Recharts(React和D3构建的图表库) UI组件库:react-bootstrap

  8. Vue3 企业级优雅实战 - 组件库框架 - 4 组件库的 CSS 架构

    在前一篇文章中分享了搭建组件库的基本开发环境.创建了 foo 组件模块和组件库入口模块,本文分享组件库的样式架构设计. 1 常见的 CSS 架构模式 常见的 CSS 架构模式有很多:OOCSS.ACS ...

  9. [翻译]怎么写一个React组件库(二)

    本文同步发布于知乎专栏 https://zhuanlan.zhihu.com/p/27434018,喜欢本文的就去知乎点个赞支持下吧- 引言 该系列文章将通过创建一个组件库来引导你学习如何构建自己的组 ...

随机推荐

  1. vmware 12中安装苹果系统

    我用的系统是win10... 一.所需软件: 1.下载并安装VMware Workstation Pro 12 密码:7ybc和序列号 密码是:bwm0 2.下载unlocker 203(for OS ...

  2. javascript-mqtt

    js client使用paho-mqtt,官网地址:http://www.eclipse.org/paho/,参考http://www.eclipse.org/paho/clients/js/官网给出 ...

  3. Centos7下完美安装并配置mysql5.6

    Centos7将默认数据库mysql替换成了Mariadb,对于我们这些还想用mysql的人来说并不是一个好消息. 最近我搜罗了网上各种安装教程,各种出问题,要么安装失败,要么安装成功了却使用不了my ...

  4. curl NSS error -8179 (SEC_ERROR_UNKNOWN_ISSUER)

    尝试分析 首先根据提示,我判断是CA证书过期.于是对证书进行了更新 update-ca-trust 但是依然没有解决问题.之后,尝试了很多方法后,重新回来想想,为什么不适用curl -v来获取更多信息 ...

  5. linux内存源码分析 - 页表的初始化

    本文为原创,转载请注明:http://www.cnblogs.com/tolimit/ 本文章中系统我们假设为x86下的32位系统,暂且不分析64位系统的页表结构. linux分页 linux下采用四 ...

  6. UVA10720 Graph Construction 度序列可图性

    Luogu传送门(UVA常年上不去) 题意:求一个度序列是否可变换为一个简单图.$\text{序列长度} \leq 10000$ 题目看起来很简单,但是还是有一些小细节需要注意首先一个简单的结论:一张 ...

  7. HihoCoder1192 简单的树嵌入 dfs、构造

    题目传送门:http://hihocoder.com/problemset/problem/1192 大意:给出一棵$N$个点的树,边权为$1$,要求给每个点构造$M$个权值$v_1...v_M$,使 ...

  8. 坑爹的InetAddress getLocalHost函数

    今天在跑dubbo 的 DemoService 2.5.4-SNAPSHOT版本的时候,遇到到一个奇怪的问题.consumer怎么都连接不上provider的服务.最后才发现是由于dubbo自 己实现 ...

  9. Ionic app 上传图片之webApi接口

    App上传图片对应的webApi服务端是怎么处理的呢? using System; using System.Collections.Generic; using System.Diagnostics ...

  10. LINQ 如何动态创建 Where 子查询

    还是那句话,十年河东,十年河西,莫欺少年穷! 学无止境,精益求精... 今天探讨下如何构造动态的LINQ子查询 LINQ,相信大家都写过,很简单,下面以一个基本的范例说明下: namespace Co ...