前言
前一阵子用Egg做了一个Node服务端项目的重构,发现Egg相比于Koa和Express来说,感觉更适合于现阶段团队的Node开发,因为现在团队Node的代码根本没有任何规范和约定,乱的一坨,所以引入了Node,遵循它的规范,使用它预置的功能,对代码的可维护性提升还是比较大的。
开发完成后,在Egg的基础上增加了一点中间件,配置了一些插件和代码风格控制的配置,将这个模板抽离出来作为团队以后开发Node服务的基准模板,放在了Gitlab上。
原来的时候方法都是直接Clone这个项目,再去更改Git的相关信息等等,不是很方便。所以想试着做一个类似于简易的Vue-Cli这样的工具,能够直接拉取模板,并且直接生成对应的目录,配置一些简单的信息。
因为要实现的脚手架工具比较简单,没有那么多的配置,实现起来还是比较简单的。下面分几个部分记录自己学习的过程。
控制台交互
使用Cli工具,必定要在控制台输入、输出一些相关的信息,可以使用Commander这个包,它可以接受并解析在控制台输入的参数process.argv
,它基本的使用方法如下:
program.version('0.1.0')
.option('-i, init [name]', '初始化Egg项目')
.parse(process.argv);
通过上面的配置,我们就可以通过program.init
拿到用户在控制台输入init a
时跟在init
后面的输入a
,我们将a
作为模板的目录名
然后在开始拉取模板之前,我们需要有一个Loading的提示,会更加友好,可以使用ora这个包,它用来在终端展示loading的图标。我们这里使用的也很简单,开始时展示图标和提示语:
const spinner = ora('正在拉取Create-Egg-App模板...').start();