2021-03-15 初稿 2021-10-15 补充对一体化进行表述
经过之前的技术铺垫,终于到了这一步。
思路
- 您要创建一个什么项目?
- Vue 先只处理这个 vue.config
- 想使用什么打包技术?
- webpck5
- vite2
- 开发vite2 打包webpack5
- 使用 vue 哪个版本?
- vue2
- vue3
- 需要支持ts吗?
- class style: vue2 + decorator
- vue2 + compositon
- vue3 + ts
- 需要支持 router 吗
- 是
- 否
- 需要支持 vuex 吗
- 是
- 否
- 需要支持UI框架吗
- element
- vant
- 需要预编译器吗
- less
- 待补充
- 代码格式化?
- prettier
- 不需要
- 选择格式化特性
- 保存时候格式化
- 提交时 格式化并修复
- 单元测试?
- 无
- Mocha+Chai
- Jest
- E2E 测试?
- 无
- cypress
- 完成了,列个清单
vue3-vite2-admin
otto 想法汇总
以下想法是个人观点:
一体化脚手架工具,内部代号 ox
- 短期目标: vite 版本的 vue-cli ,可以创建模板,管理依赖
- 中期目标: vite 版 vue ui ,提供可视化 GUI 页面,管理多项目依赖,封装简化 lerna、封装曝光推荐组件
- 长期目标:可视化页面管理路由、接管构建,把 jenkins/gitlab-cli 作为构建选项接入
十二生肖里谁能代表默默付出、勤勤恳恳、任劳任怨,可以帮我完成项目全生命周期的管理功能。狗已经用了,牛! ox! 老牛!默默耕耘,挺适合作为脚手架的代表形象。
牛 ox 勤勤恳恳、任劳任怨,一体化脚手架
技术规划:
- 脚手架部门经过选型,决定用的是 vue-cli 背后使用的 minimist 参考链接 https://www.npmtrends.com/commander-vs-minimist-vs-yargs
- 常规功能 inquirer/chalk/ora/gitlab repo down,常用功能的组装,scope 发包等
- npm发包,npx/npm init/yarn create https://www.yuque.com/xinbao37/fe-tools/create-self-cli.md
- vite 战未来,介绍分析 https://www.yuque.com/xinbao37/roadmap/vite2
愿景:
- 新项目能创建,根据需要提供初始化模板、功能、依赖
- 已存在的项目管理依赖,引入新依赖
- 部署项目全托管
- 从创建就考虑的微前端接入
- 内部 serverless 平台模块化接入、多端交付。从字节跳动进行展望 https://www.yuque.com/xinbao37/learn/efeyv3
api 设计
register global as ox
ox create [projectName]
创建 blank/base 项目ox create [projectName] -type all
默认完整项目ox create
交互式完成创建ox add component
创建组件库ox add pages
创建路由页面ox add feature [route/pinia/ts/eslint/prettier/element3/nutui/cypress]
添加功能ox ui
ui界面创建ox update [ts/route/vue]
提升最新的版本,但这依赖内置的 monorepo 小包ox install
ox commit
引入 git czox dev/build/start/serve
开发、构建、预览ox docs
像 rust 一样内置文档ox http
规划中,看如何结合 swagger 生成 req/res 类型ox publish
规划中,通过配置文件上线到远程,或者结合 jenkins
common:
ox -v/-V/-version/--version
版本号ox -h/--help
帮助ox author
展示贡献者信息
monorepo+pnpm
依赖项补充
- chalk 颜色log
- cac/minimist 参数解析
- inquirer 交互式互动
- easy-table
- ora loading
- semver 版本号