作为一个前端,相信很多小伙伴都想搭建一个属于自己的组件库。但是却又不知道从哪里入手,不知道如何搭建一个开发组件库的框架。别担心,本篇文章将教你如何快速搭建一个属于自己的 Vue3 组件库。
了解 easyest 框架
Easyest 是一个 Vue3 组件库开发环境框架,采用 Vite4+TypeScript 为技术栈,支持按需加载,单元测试,自动打包与发布等功能,可以让我们直接上手组件库的开发。
它是我去年开发的一个框架,如果你想了解这个框架是如何实现的也可以关注公众号点击菜单-实战项目-Vue3组件库开发 查看完整教程,每一行代码都提现在了教程里面。当然,你也可以直接使用,直接一行命令就能拥有~
如何使用
只需要在终端执行
npm create easyest
根据提示输入项目名称,选择 easyest 模板,等待一会,就可以得到一个组件库开发框架
这里命名可以随意,我的就命名为 easyest,然后进入这个项目执行
pnpm install
初次安装用时可能比较长,同时注意这里用的是 pnpm,因为该框架采用的是基于 pnpm 的 Monorepo 项目。如果没安装 pnpm 可以全局安装一下
npm install pnpm -g
安装完成之后我们就可以启动我们的测试项目了,这里可以实时预览调试我们开发中的组件
pnpm run easyest:dev
启动完成就可以在浏览器中访问了
可以看到出现了两个按钮组件,下面我们来看下这些组件是如何开发的
组件开发
我们的组件库的包所在的位置是在packages/components
下,每个组件都在 src 目录下,这里预设了两个组件button
和icon
,后续开发其它组件都放在这个目录下即可

每个组件的目录如下,以 button 为例
-- components
-- src
-- button
-- _tests_ 单元测试用例
-- style 样式文件
-- button.vue 组件主要逻辑
-- index.ts 导出组件
-- index.ts 导出全部组件
-- index.ts 组件库入口文件
组件调试
刚刚启动的测试项目其实是在 play 下,我们来到play/app.vue
中
<template>
<div>
<ea-button>按钮</ea-button>
<Button>123</Button>
</div>
</template>
<script lang="ts" setup>
import { Button } from '@easyest/components';
</script>
可以从@easyest/components
包中引入我们开发中的组件,这里是可以实时预览的,比如我们将 button.vue 加两个字

然后保存一下,浏览器上的 button 组件就能自动刷新

打包组件库
当我们组件开发完后就可以打包了
pnpm run build:easyest
项目打包后的文件地址是在packages/easyest
下,也就是说我们最终要发布的就是这个文件
所以为了避免重名,可以到easyest/package.json
中改一下包名,版本,作者,git 地址,改成你自己的即可
组件发布
发布之前你需要将项目关联一个 git 仓库,并且需要先进行提交到 git 仓库才能发布。同时 commit 之前也有一些规则校验,比如你需要按照下图所示规则提交

提交完成之后就可以发布组件库了,直接执行pnpm run publish:easyest
此时会有一些提示如选择如何提升版本,是否发布,是否加个 tag 等等

当然,如果你没有登录 npm 的话,会先让你登录 npm,所以这里需要你先注册 npm 账户。一切就绪不出意外的话就能发布成功了,发布成功之后直接在 vue3 项目中安装就能使用啦
写在最后
本篇文章只是教你如何使用这个框架,如果你想更深入的理解学习如何开发一个 vue3 组件库不妨看一下教程。里面包含很多内容如下
关注公众号点击菜单-实战项目-Vue3组件库开发即可查看完整教程
仓库地址(点个 Star 吧!): https://github.com/qddidi/easyest
最后我在参与掘金创作者打榜活动,点击阅读原文 为我打榜!
你一票我一票,小月明天就出道!你不投我不投,小月何时能出头!
原文始发于微信公众号(web前端进阶):一行命令教你快速搭建一个 Vue3 组件库
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/232129.html