Leader:写一个快速创建 Node 项目的 CLI 工具, 不难吧?

Leader:写一个快速创建 Node 项目的 CLI 工具, 不难吧?

「本文正在参与技术专题征文Node.js进阶之路,点击查看详情」

前言

大家好,我是 koala,一个有趣且乐于分享的人,目前专注完整的 Node.js 技术栈分享,工作中负责部门中台搭建以及低代码平台的一些能力。如果你对 Nowebpack中文文档de.js 学习感兴趣的话(后续有计划也可以),可以关注我,加我微信【github下载ikoala520】,拉你进交流群一起交流、学习、共建,或者关注我的公众号程序员成长指北。Github 博客开源项目 github.com/koala-codin…

代码已开源, 源码地址:

https://github.com/koala-coding/create-bff-service-cli

npm 地址:

https://www.npmjs.com/package/create-bff-service-cli

介绍

快速搭建一个基于 egg框架 的 bff-service cliwebpack原理工具。

  • 服务模版多种typescript是干嘛的语言可选模 typescripgithub是干什么的t/javascript (建议选择 typescript,目前只添加了typescript 模版)
  • 模版内typescript和js的区别容支持根github直播平台永久回家据 CLI 动态交互配置,具体可配置内容可看下文参数说明
  • 服务模版编码规范已完善,已添加 eslintprettiertsconfig 配置等,并且支持自动保存校验,.vscodesettings.json 已配置 。
  • 提供了基本项目结构 routercontrolltypescript面试题erserviceconfig 配置等,可直接测试template中提供的基础接口。

技术实现

Cli 流程图

Leader:写一个快速创建 Node 项目的 CLI 工具, 不难吧?

使用的模块介绍

  1. commander: 提供了用户命令行输入和参数解析的工具
  2. chalk: 可以实现好看的日志输出
  3. inquirer: 一个强大的用户与命令行交互的工具
  4. listr: 可以在命令行中画出进度列表的工具
  5. ncp: 可以实现跨平台递归拷贝文件
  6. pktypescript有必要学吗g-install: 可以使用 yarn installnpm install 安装依赖
  7. semver: 专门分析语义化版本的工具
  8. shelljs:同步的可以只想 shell脚本工具
  9. execa: 可以衍webpack是干什么用的生一个 shell,传入 command 字符串在该 shell 直接处理的子进程管理工具,支持 promise 回调

相较于一些网上的 CLwebpack热更新原理I 文章增加的一些考虑点

  1. 模块更新的检查(比如公司内使用,可以强制检查更新)
  2. 模版代码基于Egg,并对Typescript模块代码进行了工程化配置(eslintwebpack最多支持几个入口,prettier 等typescript官方文档),开箱即用。
  3. 支持模版代码的依赖安装 ,目前使用的 yarn
  4. 支持模版代码的 git 初始化

代码实现

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

源码地址:

https://github.com/koala-coding/create-bff-service-cli

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

写完 CLI 一typescript是干嘛的点感想,希望有所帮助

模型思想

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

插件思想

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

不知道 Node学什么 ???

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

后续更新迭代内容

  1. 增加 plugin 插件机制,感兴趣typescript教程的小伙伴可以一起nodejs是前端还是后端讨论或者提 pr
  2. BFF-SDK 融入,这是 BFF 核心部分,还github是干什么的没有考虑好哪些功能是可以开源的。后面会更新一篇 《一个优雅的 BFF-SDK 应该包含哪些功能》

CLInodejs是前端还是后端typescript有必要学吗速开始

使用前的准备工作

  1. 安装 node.js

    nogithub是干什么的de.js安装可以官网下载安装,nodtypescript什么意思ejs.org/

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

  2. 安装 yarn

    >npminstall-gyarn
    
  3. 安装 nrm nrm 作用是修改 npm 的镜像源 安装 nrm

    >npminstall-gnrm
    

    设置 npm 源为私服地址:

    >nrmaddmehttp://*.*.*.*:78900
    >nrmuseme
    
  4. 建议 IDE vscode

  5. vscode必装插件 ESLint

    Prtypescript官方文档ettier - Code formatter

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

安装 creanodejs安装te-bff-service-cli

>npminstall-gcreate-bff-service-cli

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

cli 执行命令说明

在命令行执行命令

create-bff-serviceinit

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

参数项说明
  1. 服务名称 serviceName:nodejs是前端还是后端 服务的英文名称,例如: xxx-bff-service
  2. 作者 author: 作者giti轮胎的英文名称,例如:xiaoming
  3. 服务端口号 port: 找运维申请的服务端口号,例如:7001
  4. 版本号 version: 服务的版本号,例如:0.0.1
  5. 介绍 description: 服务的介绍 例如:某业务线的 BFF 服务
  6. 模版 templgithub中文官网网页ate: 选择模版 例如:选择 typescript 模版
  7. 项目版本管理 git: 选择是否 git 初始化项目 例如: yes git 初GitHub始化项nodejs安装教程
  8. 项目依赖安装 instalnodejs安装教程l: 选择是否安装依赖 例如: yes install 所有依赖
使用调试模式启动 cli 创建的 bff-service
>yarndebug
模版接口测试

接口访问测试:调用 dwebpack最多支持几个入口emo/demo1 路由,获取服务返回数据。

curlhttp://127.0.0.1:7890/demo/demo1
//返回结果
{"status":200,"data":{"r":"helloword"}}
模版代码保typescript中文网存自动格式化配置

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

代码已开源, 源码地nodejs安装址:

https://github.com/koala-coding/create-bff-service-cli

关于我 & Node交typescript什么意思流群typescript面试题

大家好,我是 koala,一个有趣且乐于github中文社区分享的人,目前专注完整的 Node.js 技术栈分享,工作中负责部门中台搭建以及低代码平台的一些能力。如果你对 Node.js 学习感兴趣的话(后续有计划也可以),可以关注我,加我微信【ikoala520】,拉你进交流nodejs安装教程群一起交流、学习、共建,或者关注我的公众号程序员成长指北。Github 博客开源项目 ginodejs安装教程thub.com/koala-codin…

  • 欢迎加我微信【 ikoala520 】,拉你 进 Node.js 高级进阶群,一起学Node,长期交流学习…

评论

发表回复