认真写了个快速创建 Node 服务的CLI,看看对小伙伴们有帮忙吗?

点击上方 程序员成长指北,关注公众号

回复1,加入高级Node交流群

源码地址https://github.com/koala-coding/create-bff-service-cli

已经上传到npm,支持下载使用

介绍

快速搭建一个基于 egg框架 的 bff-service cli工具。模版功能有如下,下文介绍了cli 的实现。

  • 服务模版多种语言可选模 typescript/javascript (建议选择 typescript,目前只添加了typescript 模版)

  • 模版内容支持根据 CLI 动态交互配置,具体可配置内容可看下文参数说明

  • 服务模版编码规范已完善,已添加 eslintprettiertsconfig 配置等,并且支持自动保存校验,.vscodesettings.json 已配置 。

  • 提供了基本项目结构 routercontrollerserviceconfig 配置等,可直接测试template中提供的基础接口。

技术实现

CLI 流程图

使用的模块介绍

  1. commander: 提供了用户命令行输入和参数解析的工具

  2. chalk: 可以实现好看的日志输出

  3. inquirer: 一个强大的用户与命令行交互的工具

  4. listr: 可以在命令行中画出进度列表的工具

  5. ncp: 可以实现跨平台递归拷贝文件

  6. pkg-install: 可以使用 yarn installnpm install 安装依赖

  7. semver: 专门分析语义化版本的工具

  8. shelljs:同步的可以执行 shell脚本工具

  9. execa: 可以衍生一个 shell,传入 command 字符串在该 shell 直接处理的子进程管理工具,支持 promise 回调

相较于网上的 CLI 文章增加的考虑点

  1. 模块更新的检查(比如公司内使用,可以强制检查更新)

  2. 模版代码基于Egg,并对Typescript模块代码进行了工程化配置(eslint,prettier 等),开箱即用。

  3. 支持模版代码的依赖安装 ,目前使用的 yarn

  4. 支持模版代码的 git 初始化

代码实现

代码实现,直接贴一下源码地址(看完前面部分可以先自己实现一下 CLI,对比学习下,也可给我提一下建议,共同进步) 对于 BFF 这个只是个基础版本,后面会持续更新。

源码地址:https://github.com/koala-coding/create-bff-service-cli

如果对你有帮助可以点个 star 哦!感谢!

写完CLI 一点感想

模型思想

建立模型思想,做一个功能时候可以考虑是不是一个模型,如果是模型会不会考虑抽离出来,比如这个cli 用到的 npm模块,inquirer,相信写过 cli 的小伙伴都有用过这个模块,我理解它就是一个模型,其实就是一个问答系统模型(更通俗的说就是个问卷答题模型1题选择A,跳到 3 题,1 题选择B跳到2,我想大家应该都玩过这个问答,考虑一下具体实现,再去看看inquirer,也会有所收获)

插件思想

建立插件思想babelwebpack 的强大之处,绝对离不开他们的插件机制。我们在工作中也可以多考虑到这一点, 举个例子:比如本文如何对一个cli工具建立可插拔的plugin插件机制,因为 CLI可能会给多个部门创建 BFF 服务使用,不同的业务可能要创建的 BFF 有所区别,有的需要加入动态脚本执行机制,做大计算,有的并不需要这种功能,CLI 创建项目时候可以不加入,这时候就可以把 动态脚本执行模块单独封装成一个插件。

不知道 Node学什么 ???

NPM 官网真的有很多优秀的模块包!,去上面找两个都能学到一些的。比如这次写CLI用到的几个,举两个例子:ncp 模块,网上一些文章也都实现了拷贝,但是是否考虑到了跨平台等,可以看下 ncp 的实现。execa 模块,都知道 node中也有执行shell脚本的模块,为什么选择它呢?它是如何支持 promise 的。

后续更新迭代内容

  1. 增加 plugin 插件机制,感兴趣的小伙伴可以一起讨论或者提 pr

  2. BFF-SDK 融入,这是 BFF 核心部分,还没有考虑好哪些功能是可以开源的。后面会更新一篇 《一个优雅的 BFF-SDK 应该包含哪些功能》

CLI 快速开始

使用前的准备工作

  1. 安装 node.js

    node.js安装可以官网下载安装,https://nodejs.org/

    也可以使用 nvs安装,方便切换版本,https://github.com/jasongin/nvs

  2. 安装 yarn

    > npm install -g yarn
    
  3. 安装 nrmnrm 作用是修改 npm 的镜像源 安装 nrm

    > npm install -g nrm
    

    设置 npm 源为私服地址:

    > nrm add me http://*.*.*.*:78900
    > nrm use me
    
  4. 建议 IDEvscode

  5. vscode必装插件ESLint

    Prettier - Code formatter

    通过这两个插件,配合项目中的规则配置文件,可以使团队中的代码格式化规则一致

安装 create-bff-service-cli

> npm install -g create-bff-service-cli

安装之后就可以使用 cli 命令:create-bff-service

cli 执行命令说明

在命令行执行命令
create-bff-service init

然后会出现交互提示,按照交互提示输入各项参数。

参数项说明
  1. 服务名称 serviceName: 服务的英文名称,例如:xxx-bff-service

  2. 作者 author: 作者的英文名称,例如:xiaoming

  3. 服务端口号 port: 找运维申请的服务端口号,例如:7001

  4. 版本号 version: 服务的版本号,例如:0.0.1

  5. 介绍 description: 服务的介绍 例如:某业务线的 BFF 服务

  6. 模版 template: 选择模版 例如:选择 typescript 模版

  7. 项目版本管理 git: 选择是否 git 初始化项目 例如: yes git 初始化项目

  8. 项目依赖安装 install: 选择是否安装依赖 例如: yes install 所有依赖

使用调试模式启动 cli 创建的 bff-service
> yarn debug
模版接口测试

接口访问测试:调用 demo/demo1 路由,获取服务返回数据。

curl http://127.0.0.1:7890/demo/demo1

// 返回结果
{"status":200,"data":{"r":"hello word"}}
模版代码保存自动格式化配置

该功能正常使用前提需要安装前文提到的 vscode 插件

Node 社群

我组建了一个氛围特别好的 Node.js 社群,里面有很多 Node.js小伙伴,如果你对Node.js学习感兴趣的话(后续有计划也可以),我们可以一起进行Node.js相关的交流、学习、共建。下方加 考拉 好友回复「Node」即可。

   “分享、点赞、在看” 支持一波 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值