0%

2021-12-18 我是为什么给自己写了一个项目初始化脚手架的?

2021-12-18 我是为什么给自己写了一个项目初始化脚手架的?

草梅友仁自制的项目模板创建器 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://blog.cmyr.ltd/archives/d5cd10e9.html
版权声明:转载请注明出处!

坚持原创技术分享,您的支持将鼓励我继续创作!