【BFUI】一个基于Vue3的开源UI组件库
背景契机
很久之前,我就想着自己能够从头开始参与开发一款前端组件库,来锻炼自己的编程能力和协作水平。当时还摸索着学了如何发布了一个 NPM 包,测试的包名是 @barry-flynn/bfui
,可惜由于后来精力和动力不足,该想法也没有再进行下去,不久后我会将该包设置为弃用状态。2023年初,机会来了,字节跳动“第五届青训营”的大项目题目之一就是 组件库
,另外两个题目是 基于SSR开发仿掘金站点
和 关于新冠疫情的数据可视化作品
。
组队立项
这届青训营大概有4000多名学员,光基础班就有3000多人。临开课前,大家在活动群里大家都展示着自己的技术栈,寻找合适的同学组队。实话实说,看着那么多人的消息刷屏,又感受到了之前参加第二届青训营的压迫感,感觉自己分分钟淹没人海中。
在1月12日晚上顺利完成了组队,于是接下来的时间我将与其他五位队员完成组件库任务的开发。
在1月13日上午,团队成员来了场语音会议,商讨了一些开发细节,初步暂定如下:
- 组件库名将延续
BFUI
和其LOGO,并在GitHub建立了组织 BF-Teams。 - 开发语言:
Vue2 + JS + TS/Es6、babel + flow
,Css预编译器采用Less
- 代码风格:
Eslint + prettier
- 打包工具:
Vue-CLI + Webpack
- 依赖管理:
npm
- 版本控制:
Git + GitHub
- 文档构建:
VuePress 2
- 组件库名将延续
经过研究讨论,对技术选型进行了一些调整:
- 开发语言:项目确定要使用
TypeScript
,考虑到 Vue2 对其支持不是很好,故更换为Vue3
- 依赖管理:参考了多个同类组件库,最后考虑到 Vue 生态仓库逐渐迁移到 pnpm,故更换为
pnpm
管理依赖 - 打包工具:由于 Vuepress2 默认打包工具是 Vite,考虑到方便且构建速度问题,决定使用
Vite
进行项目构建
- 开发语言:项目确定要使用
因此本项目采用的技术栈大致如下:
- 开发语言:
JS + Es6 + Less + Vue3 + Babel + TS
- 代码风格:
Prettier + ESLint + stylelint
- 代码提交:
husky + lint-staged + commitlint
- 打包工具:
Vite
- 文档构建:
VuePress2
- 依赖管理:
pnpm
- 版本控制:
Git + GitHub
- 测试工具:
Jest
- 开发语言:
2023年01月25日,创建npm组织 bf-teams
目录结构
参考了同类开源组件库项目,我们初步建立如下目录结构:
组件库 相关链接 开源协议 element-plus 官方文档 GitHub Gitee MIT ant-design 官方文档 GitHub Gitee MIT arco-design-vue 官方文档 GitHub Gitee MIT tdesign-vue-next 官方文档 GitHub Gitee MIT vant 官方文档 GitHub Gitee MIT view-ui-plus 官方文档 GitHub MIT
1 | <root> |
【参考内容】
[2] 【☆】vue3组件库搭建
使用 pnpm
当做包管理工具,用 pnpm workspace
来实现 monorepo
多模块管理。
[4] 【☆】企业级前端组件建设
[5] Vue 注册组件,抽离 withInstall 方法
[6] 前端组件单元测试
[8] 从0到1 开发一个自己的ui库
[10] 基于vue-cli封装自己的ui组件库并上传到npm
[12] 步进式解读Apache许可证
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 百里飞洋!
若存在错误或不当之处,还望兄台不吝赐教,期待与您交流!
评论