使用nodeJS来做一个cli工具

前言

nodeJS是javascript的一个运行环境,是基于chrome v8引擎的封装,由于其具备的一些优点,使得它极大延伸了javascript的用武之地,本篇文章就是探索实现一个基于nodeJS环境的cli工具。

准备工作

安装nodeJS(此处省略100字…)

撸代码

代码没啥好说的,你想实现怎样的一个cli工具,你就使用nodeJS相应的api去封装,去实现功能,唯一额外需要注意以下跟代码不太相关的东西:

  • 由于是使用node作为运行环境,因此命令行工具执行文件头部需要指明环境,一般为:#!/usr/bin/env node

  • cli工具需要全局使用或者供他人使用,你需要按照npm包的编写规则来组织代码结构,包的规则最基本的是,你需要有一个package.json的文件,及一个bin目录,package.json对bin目录需要进行描述,其描述的键值对中,键会在发布后作为cli命令的关键字,值即为cli命令指向运行的js脚本。具体示例如下:

...
"bin": {
  "cli-command-name": "bin/index.js"
}
...
  • 编写过程需要注意,如果需要给不同操作系统用,需要注意windows与unix的会有差别。一般来说unix系统上编写的cli命令可在windows上运行,而在windows上编写的cli命令工具,在unix系统上会报错

  • cli命令最好不要与npm包中其他已发布的包重名,可以先去npm官网去搜下

  • 编写命令行cli工具可以借助一个第三方库commander.js

  • 在发布前,可以先使用npm link将包内容发布到本机全局部署,然后就可以在本机上使用该cli命令

  • 发布后给人使用的系统中,请务必保证有nodeJS环境,否则无法生效

发布

首先,你需要一个npm账号;然后就是简单的一些操作命令,如npm login, npm publish。此时发布的代码只是在npm托管的,如果你想把代码开源托管在github上,你需要自己上传到github上,同时你可能注意到,其他很多npm包都有链接跳转到github的开源代码处,如果你熟悉package.json文件的配置和npm官网的显示规则,就会知道,你需要再package.json中加入一段如下代码:

"repository": {
  "type": "git",
  "url": "git+https://github.com/Andrewuetyang/rname-cli.git" // git + 后面是你的npm包在github上的托管位置
},

另外发布过程中,可能会遇到发布不成功报403,这极有可能是因为npm注册是淘宝镜像,需要切换回原地址。

最后

嘿嘿,自己在学习这个后,我的第一个cli工具是写了一个可以批量重命名文件名的工具,由于这种工具已经很多了,所以关键字被占用了,只能取了一个rname-cli这样的命令名字,吨吨吨…自己写的cli符合自己的使用习惯,是的,虽然有很多这种rename工具,但是不喜欢他们的规则,自己写的用的很爽。

发表评论

电子邮件地址不会被公开。 必填项已用*标注