如何从零实现一个element-plus组件库的框架(长更中)

399 阅读2分钟

前言

  做为一个前端,我们都想打造一个自己的组件库。那么我就带大家来搭建一下自己的组件库吧。主要用ts来写,因为Vue3的底层也是用ts来写的,从这方面看兼容性不错。

为什么不是rollup

  做为Vue组件库打包,我不是用的rollup,因为rollup的插件是不能打包setup lang="ts" setup这样打包是有问题的。但是打包export default defineComponent是可以的。

选择包管理工具

  我会选择pnpm包管理工具,具体原因,请参考我之前的文章。pnpm从入门到精通pnpm主要是支持了workspace协议的。如何开启workspace协议呢?需要在根目录的package.json中添加workspaces的数组。那么有什么用途呢?就是里面的package.json,会共享根目录的package.json中的依赖。减少了依赖库的冗余。

选择文档工具

  vitepress

选择CSS工具

  SCSS,与element-uiSCSS的不同的是,element-plus中使用了@use,而不是@import. 为什么官方有这样调整?

1.`@import`引入的`mixin`,变量和函数都是全局的。可能存在相同的命名覆盖的情况。
2.避免出现覆盖的情况,只能在命名前面加上前缀。
3.每个样式表在每次@import引入的时候,执行编译为css的时候,会非常耗时。

我们再来看看@use这个SCSS的特性。 以这种方式加载的任何样式都将在编译的 CSS 输出中仅包含一次,无论这些样式被加载多少次。

SCSS的打包工具怎么选择?选择gulp.glup打包需要安装一系列插件。主要有哪些插件呢?

  1. gulp-rename,主要用于glup打包重命名文件。
  2. gulp-clean-css主要用于压缩css的插件,减少体积。
  3. glup-sass主要是用来打包node-sassdart-sass的。
  4. gulp-autoprefixer自动增加CSS的前缀。
  5. glup主要的配置文件,主要写在gulpfile.ts这个文件里面。

初始化一个项目

1.用vite,初始化一个项目。然后项目名称自己写,选择的框架是Vue。命令如下:

   pnpm create vite

2.新建文件夹,docs用于放置文档工具,packages用于存放组件,SCSS文件。在packages文件夹中,新增componentstheme-chalk两个文件夹。一个用于放组件,一个用于放SCSS文件。然后用pmpm init这个命令在componentstheme-chalk中创建package.json文件。

3.在theme-chalk中,新建src文件。安装上面的gulp-renamegulp-clean-cssglup-sassgulp-autoprefixer。然后新建gulpfile.ts这个文件。

4.在根路径的package.json中,安装gulp,sass,consola等包,consola用于Node.js和浏览器的优雅控制台记录器。然后在gulpfile.ts中配置相应的打包配置。