位置: 编程技术 - 正文

详解用node编写自己的cli工具(node用什么写的)

编辑:rootadmin

推荐整理分享详解用node编写自己的cli工具(node用什么写的),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:如何使用node.js,node用什么写的,node编程,node怎么做,node编程,如何使用node.js,使用node,node怎么写,内容如对您有帮助,希望把文章链接给更多的朋友!

工作中接到新项目,开发前都需要先规划项目目录,然后一个个创建文件,搭建sass编译环境,下载jquery,Swiper等类库... 这些准备工作都要花上不少时间。每做一个项目,都会遇到同样的问题,再重复一遍吗?是时候做点改变了:编写自己的cli工具,一行命令,3秒钟进入coding状态!

本文以自己的my-cli为例,将开发到发布过程完整记录下来,看完本文,你将学会如何从零开发一个cli项目,如何上传到github库,以及如何使用npm发布自己的包。

准备

开发一个cli工具前首先要想好它能做什么。以我自己为例,我需要一个工具,让我能只输入一行命令就帮我快速搭建好项目结构,就像这样:

是不是很炫酷?放心,很简单。

开始

首先创建你的cli项目,并使用npm init创建一个package.json。

根据提示一步步创建好package.json。name属性就是你发布到npm上的名字,这个是不能与npm上现有项目重名的,一个小技巧是使用npm install下载你想要起的包名字,如果报错,那么你的包名是可用的。最后创建好的package.json文件像这样子:

编写可执行文件

package.json中有一个"bin"字段,配置后才可以在控制台使用你的命令。

我们配置了"my-cli"命令来执行index.js文件。用你喜欢的编辑器,在项目主目录下创建一个index.js文件。

注意第一行的"#! node"很重要,表示用node来执行这个文件。如果没有这句声明,就会在记事本中打开index.js文件。

全局安装你的包

使用 npm install -g 将你当前的项目安装到全局环境,现在你可以在命令行使用"my-cli"命令了。

用fs模块快速生成项目模板

我们自定义的指令可以执行了,接下来编写代码实现功能。my-cli的主要功能就是生成项目模板,一个思路是用一个templates文件夹保存项目模板,然后通过fs.mkdir()来创建项目目录,最后把文件从templates文件夹拷贝到项目中去。

详解用node编写自己的cli工具(node用什么写的)

核心代码就这么点,是不是非常简单?

整个项目文件结构差不多就这个样子,把你需要的文件放到templates文件夹,然后用copyTemplate方法将文件拷贝到项目目录下。

创建文件目录和拷贝文件的过程,代码看着比较丑陋

接收命令行参数

平常我们使用命令行工具时都会用到参数,如 webpack -p, express -e 等,现在我们来为自己的cli添加接收命令行参数的功能。为my-cli设计四个参数,用来向项目中添加类库。

使用commander包可以简化解析参数过程,但是本项目比较简单,我也不想额外引入其他的包了,处理一些简单的参数其实并不难。

node中我们可以使用process.argv来获取命令行参数,process.argv是一个参数数组,第一项为node.exe的绝对路径,第二项为执行该js的绝对路径,使用process.argv.slice(2)即可获取输入的参数数组。

通过遍历参数数组来检查命令中输入了哪些参数。如果输入了预设的参数,就为config对象添加对应的属性,在生成文件时根据onfig判断是否将模板文件拷贝到项目中。继续丑陋的代码:

本地运行

至此我们的项目已经基本完成了,使用 npm install -g 将项目安装到全局环境,然后新建一个项目文件夹,使用my-cli命令来生成项目模板。

发布到npm仓库

要想将自己的包发布到npm上,首先得有一个npm账号,创建账号非常简单,输入npm adduser,简单三步即可完成创建。

创建好user后,使用npm publish即可将当前项目发布到npm上了,以后就可以使用npm install -g my-cli 来安装你的cli工具。

结束语

相信大家看完本文后知道如何根据自己的需求制作cli工具了。本文中的my-cli比较简单,权当做抛砖引玉。如果想查看完整源码或者使用这个工具,可以戳这里:github地址。

标签: node用什么写的

本文链接地址:https://www.jiuchutong.com/biancheng/380801.html 转载请保留说明!

上一篇:Nodejs中Express 常用中间件 body-parser 实现解析(node.js express koa)

下一篇:Node.js 实现简单的接口服务器的实例代码(node.js开发实战详解)

  • 行政事业单位决算编制流程图
  • 免税申报表里的免税销售额是不含税
  • 车船抵扣如何填报
  • 注册资本金实缴和认缴区别
  • 企业劳务外包员工有五险一金吗
  • 资产负债表中其他流动资产包括哪些科目
  • 如何开商业承兑汇票业务
  • 汇票和支票的区别是什么
  • 上市公司股票增持是什么回事
  • 购进货物用于免征增值税项目
  • 有发票的福利费可以不交个税吗
  • 季度所得税申报表营业收入怎么填
  • 填开了红字信息表但未开红字发票
  • 市政配套费交给哪个部门
  • 易票365怎么认证发票
  • 关于个体工商户的法律规定及司法解释
  • 企业净资产指的是什么?
  • 哪些研发费用可以资本化
  • 无需支付的款项需要缴税吗
  • 1697508577
  • 代持的股份
  • 企业的税收筹划
  • 进口货物如何缴增值税
  • 教育培训行业收入
  • php怎么创建数据表
  • 误餐费怎么入账
  • 银行存款调账怎么调
  • 修改注册表限制cpu速度
  • js图片放大代码
  • 2019年下半年中小学教师资格考试综合素质试题
  • joplin使用
  • 收到小微企业贷款减息会计处理办法
  • 金融企业计提贷款利率
  • php gd
  • vue-router query
  • 以前年度损益调整在利润表中怎么填
  • flex的作用及设置
  • 图像超分综述怎么做
  • 分割sw
  • 注册公司行业分类有多少种
  • 增值税专用发票电子版
  • 购买的优惠卷到期后退款
  • 房屋租赁发票品目填写规范
  • 税控盘和维护费440元抵减增值税吗
  • 租车协议要不要报税务机关备案?
  • 手机开个人劳务票怎么开
  • 海关双抬头进口增值税发票如何抵扣
  • 承包费会计处理
  • 物流公司驾驶员安全教育培训
  • 收到银行承兑如何做账
  • 无形资产原值变更 摊销
  • 以自营方式建造固定资产
  • 年末转出未交增值税借方余额怎么处理
  • 折扣销售方式销售货物只要发票中有注明的折扣额
  • 公司注销是什么流程
  • 预售房提前还款需要去解押吗
  • 流动资产周转天数下降说明什么
  • 商业企业库存商品
  • mybatis collection 多条件查询的实现方法
  • mysqli修改表中数据
  • Windows Server 2003报错无法定位程序输入点DecodePointer解决方法
  • windowsxp打开注册表
  • win7更改win10系统要怎么更改
  • ubuntu顶部菜单栏
  • crossfire.exe是什么
  • spkrmon.exe - spkrmon是什么进程
  • fs是什么文件
  • windows右键不能用了
  • js必学知识点
  • js中的ajax
  • js跨域是什么意思
  • js基本代码
  • 应征增值税不含销售额3%和5%征收的有什么区别
  • 小汽车都交消费税吗
  • 福建省人民医院院长
  • 2016年小微企业所得税优惠政策文号
  • 准予扣除是什么意思
  • 北京朝阳国家税务总局
  • 党风监督员监督和反应情况怎么写
  • 宁波新注册公司什么时候开始报税
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设