Vue3混合组件库搭建 概念篇

2022.09.10
评论

有人云,不好用就自己写一个;

前言

对于前端开发者来说,多多少少有自己搭建一个组件库的写法,有的人为了方便,有的人喜欢折腾,而我,则属于前者

接下来我会讲解以下知识点,便于后续实战操作(如果你已熟知下列概念,请移步到实战篇):

  • Monorepo 项目搭建
  • vite3 库模式使用
  • gulp 自动化文件处理
  • vuepress2 文档搭建
  • npm 组织与发布

Monorepo 项目

mono单个、repo储存库。是一种开发策略,将许多项目代码存储到一个储存库项目中,统一管理;详情查看 wiki Monorepo

简单来说,我们建立了一个大项目,里面有很多子项目,并且实现大项目安装的依赖,子项目也能直接访问,且不需要再次安装;并且我们的子项目间可以互相在打包后安装使用,这样避免了上传到npm的操作

优势

  1. 代码复用性较强。方便将公共部分抽离并引用
  2. 简化的依赖关系管理。子项目可同时依赖其主项目,无需多次安装配置
  3. 原子提交。方便代码提交
  4. 方便大规模代码重构。可以同时并便利的对多个项目进行修改
  5. 跨团队写作。

劣势

  1. 版本信息丢失。无法在子项目中使用不同的依赖版本
  2. 缺乏单一项目的权限访问控制
  3. 占用较大,且需要合理的管理

为什么组件库选择这种模式

因为一个完整的组件库,包含了测试项目、组件库项目、组件库自定义依赖项目、组件库文档等,而他们互相又是一种互相引用的结构;终上所述,Monorepo正好满足以上需求,而事实上我们常见的组件库,都采用了此模式,如vant、element

vite3 库模式

对于我们新生代高端农民工(简称码农)来说,多多少少都用过或者知道vite(其实不知道也无所谓,你大可把他当做速度更快、配置不同的webpack),而我们在实际开发中都是用来开发网站这种项目;而库模式,为了方便我们开发个人库(组件库、函数库等等),具体配置见 vite 库模式

gulp 自动化文件处理

对于vite来说,他在打包时对less、ts这种常见的预处理语言处理是单一的,所以需要我们自己进行处理;而且目前比较主流的就是我们大名鼎鼎的 gulp.js(轻量且简洁)

vuepress2 文档

当你准备好了上述工作,那你就该开始准备组件库的搭建了;好消息是 vuepress2,一个基于vue+md的文档库,能完美解决你的需求

npm 组织与发布

一切准备就绪,打包!然后就是发布~

这里简单叙述一下组织的概念。简单来说,就理解为包的父类;假设我们发布了一个组件库叫 srui ,然后 srui 依赖于我们的自己实现的一个函数库 utils(为了复用性从组件库中抽离),此时我们的这个函数库按照规范就应该被命名为 @srui/utils;而 @srui 就是一个组织,srui就是我们的组织名称;如何建立组织,请移步 npm-Organization