一、初始化——把脚本映射为命令
1.vue-cli演示
在这里我们希望可以像vue-cli那样 在终端输入vue 有对应的命令显示
![95ca0b1c114757a81e4629a8d320bf6c.png](https://i-blog.csdnimg.cn/blog_migrate/241b5cdf77848626afb53a0342951e72.jpeg)
2.创建自己的脚手架文件(pgx-cli)
![29b2e205925fddf164eb624a54d0e387.png](https://i-blog.csdnimg.cn/blog_migrate/9fdf2c99692a7f71593c941b679830ad.jpeg)
index.js文件中写入
#!/usr/bin/env node
console.log('pgx-cli脚手架工具');
使用Node开发命令行工具所执行的javascript 脚本必须在顶部加入#!/usr/bin/env node 声明
接下来,需要在当前文件夹中使用 npm init -y 命令 创建pakaage.json文件,并在文件中 加入bin字段,如图所示
![9f4bef5db52ba3920305f67a1c12e359.png](https://i-blog.csdnimg.cn/blog_migrate/1672353f226c39ac6079fe39504a87dd.jpeg)
然后再使用 npm link命令 就可以实现 将 该文件映射到全局了
![19a3cc6a72ba706d2422876f2c10c512.png](https://i-blog.csdnimg.cn/blog_migrate/7abe57d0823f506ade01587ff9370af8.jpeg)
试着在cmd中输入 pgx,发现成功执行index.js
![6ba26afaa96d90bbbcd3611be55c6594.png](https://i-blog.csdnimg.cn/blog_migrate/6a303e4e4c484e339127db6da2de535c.jpeg)
二、使用commander解析命令行参数
1.vue-cli演示
在这里,我们希望可以像vue-cli 一样,可以输入对应的参数,实现不同的功能
![653d00f4d3666ef212e57c898e7e1042.png](https://i-blog.csdnimg.cn/blog_migrate/ea8fdc774ab7f53c8d7d8fda5bf2b478.jpeg)
2.安装使用commander
![2aff7445d12dcc1f53a5480db0f4adce.png](https://i-blog.csdnimg.cn/blog_migrate/a78fb44d7be97b186ab04f7551f245c9.jpeg)
我们可以直接复制 commander官网上的实例代码来使用
![afb0784b175b5d5980b94e6987ee99ec.png](https://i-blog.csdnimg.cn/blog_migrate/99f2ae50da60ea0f7f6f62080a44830f.jpeg)
三、设计命令行参数
在index.js中将复制过来的代码简化。
![28c769841c08dc39cf28d04ec9555043.png](https://i-blog.csdnimg.cn/blog_migrate/f0ed694551be34e01ab25ad4cabf2b79.jpeg)
接下来 就可以在cmd测试命令是否生效
![7996c6f75fcfea048c0c6319f0c83752.png](https://i-blog.csdnimg.cn/blog_migrate/712341ea13600cc866b4a6f6e0f25dfe.jpeg)
可见生效。
四、准备模板
在github创建一个仓库当作模板
![d04071331642182e35e30ca1b33cce43.png](https://i-blog.csdnimg.cn/blog_migrate/678ba2aeb5c576c0a0fe816c2dd4a79a.jpeg)
五、根据pgx create 命令 将模板下载到本地
1.安装 download-git-repo 插件
npm install download-git-repo
2.在index.js中引入并使用
![4d18081a3d48057356852855ce358d22.png](https://i-blog.csdnimg.cn/blog_migrate/458995967b6bef344c92b2f980d21bc7.jpeg)
接下来 试着在 cmd 输入 pgx create testDemo
看看能否成功下载
![b885dbf4b671aefb1f55db31ada79711.png](https://i-blog.csdnimg.cn/blog_migrate/bfa66fe9a0e7ac2ba5d399e24f8e5678.jpeg)
![0a809c4516e487280ebbc18a0e2d04e1.png](https://i-blog.csdnimg.cn/blog_migrate/d37f3ae5e6abdc6bccf313691c4aa9e3.jpeg)
桌面上成功生成一个文件
可见,成功。
六、用ora增加下载中的loading效果
安装
npm install ora
接下来,在index.js中引入并使用
![81833ed063f92c0b183d0b93f7911bc4.png](https://i-blog.csdnimg.cn/blog_migrate/789a29233ae757b04ef9bf580c171e5c.jpeg)
我们再在cmd中 使用 pgx create testDemo
看看效果
![935b2fceb8dafee124ced58112cd2413.png](https://i-blog.csdnimg.cn/blog_migrate/64924738729ec55f61c0378d08b976c7.jpeg)
可见现在有了loading样式了
七、使用chalk 和 logSymbols增加文本样式
1.下载chalk
npm install chalk
引入并使用
![fe1792422ee3a9b5dc79ff5b29367f8f.png](https://i-blog.csdnimg.cn/blog_migrate/a3d522b599c3e6befc0509c5e8c6fac4.jpeg)
接下来可以再试一次
![56aec1241112b3a06ad1e57ce09fb663.png](https://i-blog.csdnimg.cn/blog_migrate/26dd9f7fa4987cc2145a187828995b1e.jpeg)
![26308d540fba1f65994dc2ed243cfd89.png](https://i-blog.csdnimg.cn/blog_migrate/52636a4a405f7a5c4d6498abc092f755.jpeg)
可见文字提示有颜色了。
接下来,我们希望 文字前面有图标
![7768db63790fe6def6f639b9ee3436d3.png](https://i-blog.csdnimg.cn/blog_migrate/02f0e6dc1cffc5e1a854eea039ef1404.jpeg)
这时,需要安装
npm install log-symbols
然后引入并使用
![36db64bc25d6d155ccf10fe27dbc3ae0.png](https://i-blog.csdnimg.cn/blog_migrate/3c7c7d8b598865530aba67af9f09b770.jpeg)
再次测试
![598febed9c4220c9a046c1eb13cf2787.png](https://i-blog.csdnimg.cn/blog_migrate/1f0cfd2877ba86686b39d738c13f3f19.jpeg)
![8e67d02d2697012b07e929d22e3cd201.png](https://i-blog.csdnimg.cn/blog_migrate/94d96bb5ec17a6bdd8bf24883fb1f193.jpeg)
成功。
八、npm发布
打开npm官网
注册一个npm账号
在npm中检索是否有重复的包名
将package.json中的name改为发布到npm上的包名
打开控制台,执行
npm login
登陆成功后,在项目下执行
npm publish
发布
![a3266751cedc47361ffaccd61f224c37.png](https://i-blog.csdnimg.cn/blog_migrate/5bbf5fbff2d84ac720c0cfb97025e65f.jpeg)
在npm官网搜索,看看是否发布成功
![638709793f211a7ae86f7f2736c5341b.png](https://i-blog.csdnimg.cn/blog_migrate/844368bd97043953699cbc5391761561.jpeg)
可见发布成功。
接下来
测试拉下来的的pgx能不能用。
我们需要先把使用 npm unlink
把之前的映射去除。
![88dfbd78999ed05da67801e3195c3cfb.png](https://i-blog.csdnimg.cn/blog_migrate/75dbd22d20eaba4faf1ec50d2d4bb1dc.jpeg)
然后 再npm install pgx-cli -g
![3112b20d9f309a9a172b81bb7fab7866.png](https://i-blog.csdnimg.cn/blog_migrate/ed23dd961347490e551f3dccdece16c3.jpeg)
![00cf4054460aaf07ac930b56a45edb31.png](https://i-blog.csdnimg.cn/blog_migrate/fc596772516918ae1017306c645783bd.jpeg)
到此为止就实现了自己的脚手架根据, 想要下载下来的模板跟vue 一样,只需要 把自己做好的模板放在git上就好了,是不是很简单。
九、项目源码以及笔记
https://github.com/peigexing/pgx-cli