171 - 《grandpa 方案》
发布于 2022年8月19日
有兴趣参与的同学请联系我,可以在搭完架子后参与一部分工作,长期有空余时间的优先。
背景
某次直播写 dva 3 时想到的点,由于重新搭建 dva 3,我需要重头开始处理 package.json、prettier、tsconfig、eslint、test、打包工具、发布脚本等。这种重复劳动怎么能重复消耗人力呢?于是就想着写个工具自动做这件事。
这和现有的很多脚手架有啥区别?1)原子化,都是重头搭建,脚手架是一下子搭建好,可能会有些东西不是你需要的,2)可扩展,可以补充你自己的原子化能力,3)可回退,添加 prettier 不想要?再执行下工具删除就好。
这和 umi g 或者 modern.js 的「微生成器」的功能比较像,我希望重新设计后,使之成为 umi g 和 father g 的内核。名字待定,不一定叫 grandpa,发现好多人对这类词比较敏感,比如 father,不少人就是拒绝这个名字的。
实现
先给原子级的生成器一个名字,就叫「generator」吧。然后我理解主要做三件事,1)generator 的定义,2)generator 的查询 3)generator 的执行。
generator 的定义感觉 4 个属性就够,name、check、enable、disable。name 用于交互式的展示和选择,check 用于检查当前 generator 是否执行过,enable 和 disable 用于启用和回退。
比如,
export default defineGenerator({
name,
enab