草梅友仁自制的项目模板创建器 cmyr-template-cli:https://github.com/CaoMeiYouRen/cmyr-template-cli
最近这段时间优化了下之前写的项目模板创建器 cmyr-template-cli ,增加了些新的功能,让项目初始化变得更加自由。
先来说说这个项目最开始是怎么样的。
一、原始时期
最开始的时候,脚手架只有三个输入,分别是项目名称、作者名称和项目模板,当选择完项目模板之后就会从 github 上下载我已经写好的项目模板。(参考:2020-11-18 分享几个自己写的项目模板)
应该说,即便是如此简单的脚手架,也是省了我很多的功夫,极大的节约了项目初始化的时间,虽然什么自定义的选项,但用起来也还可以。
二、自动化时期
到了今年的时候,我感觉这个项目放在本地也不太合适了,是时候上传到 github 和 npm 了,于是添加了 semantic-release 等依赖,使得项目可以自动发布到 github 和 npm。
但这时候也没对项目做大改,依旧是一开始的三个选项,在自定义选项方面没有任何进步。
三、优化时期
事情的转机是从这个月开始的。
- 最开始我只是想采用
git config user.name
来作为作者名称的默认值,因为我觉得每次都要输入作者名称感觉挺麻烦的。然后就开始了优化之旅。 - 很快的,我注意到 pnpm 这个包管理器比
npm
快太多了,自己本地开发也切换成了 pnpm ,于是我就在想,干脆把脚手架的包管理器改成 pnpm 好了。由于cmyr-template-cli
是为我自己服务的脚手架,以我自己用的爽为基准,于是就改了,效果拔群。 - 这里还得额外说一句,我现在开始使用 pnpm 就是因为它比 npm、yarn 快多了,我自己一直不喜欢用 yarn 的原因就是因为 yarn 比 npm 还要慢。
- 在此之后,一个一直困扰我的问题也找上了门—— 从 GitHub 下载模板经常会失败(参考:使用 Promise.any 选择最快的镜像)。由于众所周知的原因,该问题通过添加镜像源来解决。效果拔群,只要不是出现了所有镜像源都无法访问的情况,那么就能下载成功!
- 逐渐的,更多的优化想法在我的脑海了出现,例如 增加开源选项,起因就是我个人偶尔会写一些开源项目,这样就可以在开源和闭源之间切换。
- 至于
是否移除 github-dependabot
的选项,则是因为这些模板为了保持依赖的更新,都添加了 github-dependabot 来自动更新依赖,但在自己的正式项目中,通常都不是必选项,有时候还会觉得麻烦,不如移除掉省事。 - 下一个新功能是
初始化 README.md
,虽然有readme-md-generator
这样的项目来创建 README.md,但毕竟还需要手动,我基于readme-md-generator
,将相关功能集成进了cmyr-template-cli
,使得 README.md 文件可以在创建项目的时候就初始化完毕。同样的还有 CONTRIBUTING.md,在此不再赘述。 - 再然后其实都是些比较小的改动了, 例如新增 semantic-release、License、husky 、Github Workflows、.editorconfig、commitlint.config.js 等配置的初始化,都是些我觉得可以自定义的功能
总结
本文并没有涉及到脚手架具体如何搭建的说明,讲的还是我开发过程中的一些心路历程。
简而言之,是为自己开发的脚手架,故需要满足的也就是我自己这样一个用户,自己方便了才是真的爽。
推荐有能力的读者也学习着自行搭建一个属于自己的脚手架,可以极大的简化自己初始化一个项目的时间。
- 本文链接: https://wp.cmyr.ltd/archives/why-did-i-write-a-project-initialization-scaffold-for
- 版权声明: 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
欢迎关注我的其它发布渠道
发表回复
要发表评论,您必须先登录。