平均每个月帮节省你至少10%的时间,你还有理由不写实现命令行工具吗?

从零实现一个命令行工具

介绍:
本教程将带你从零实现一个命令行工具(command-line interface),对于你可能不理解的关键点,引(wo)入(xiang)外(tou)链(lan)让你“恍然大悟”。

具体实现效果如下:

junking

实现一个简单的命令行工具

1.初始化和设置ShaBang

创建项目,在终端cd到当前路径,通过npm init之后,目录中创建index.js

index.js

#! /usr/bin/env node

console.log('hello cli')

然后,修改index.js的权限:

 chmod 755 index.js

这样我们就能简化node index.js这个命令,而变成:

./index.js

这里会输出“hello cli”

注意这里不要写成~~index.js./index~~,不然无效。

#! /usr/bin/env node这是SheBang/HashBang,用于指定用node执行脚本文件。

2.修改package.json文件

package.json文件中添加bin字段:

"bin": {
    "hello": "./index.js"
  }

hello就是命令名,./index.js就是地址。

执行npm link命令,把命令和路径进行连接,命令行提示如下:

junking@JunkingdeMacBook-Pro-3973 node实现命令行工具 % npm link
npm notice created a lockfile as package-lock.json. You should commit this file.
npm WARN node-cli-demo@1.0.0 No repository field.

up to date in 0.964s
/Users/junking/.npm-global/bin/hello -> /Users/junking/.npm-global/lib/node_modules/node-cli-demo/index.js
/Users/junking/.npm-global/lib/node_modules/node-cli-demo -> /Users/junking/WebstormProjects/node实现命令行工具

这下,我们可以使用更简洁的命令了:

hello

顺便告诉你,你现在可以在终端的路径执行hello命令了,不信你试试?

npm link用来在本地项目和本地npm模块之间建立连接,可以在本地进行模块测试。

其实到此位置,一个简单的命令行工具已经完成了,因为你可以执行hello命令来输出一段文字了。

升级!俺是一个实用性的命令行工具!

简化npm源的切换

发布过npm包的开发者应该都经历过,在npm中设置淘宝源可以加速下载速度,但是不能执行npm publish来发布包。或许有你们像我一样经常进行繁琐的切换,那么长的命令还记不住。

现在,我们将这些简化到命令行工具中:

我已经将这个工具做好了,已经发布到npm中,下面开始使用吧!

npm install -g junking@1.1.0

命令:

  junking npm源     设置npm源为官方源
  junking taobao源  设置npm源为淘宝源
  junking publish   发布包到npm官方

使用这些命令后,就不用再每次都来回地切换npm源啦!

具体的实现原理就是,通过node的child_process.exec()来执行对应的控制台命令,然后将命令封装起来,并利用yargs来配置命令行参数等等。

我觉得这个过程还是留给你自己来实现吧,思路已经告诉你了,自己动手实现印象深刻,如果仍有困难请在评论区留言,再决定是否要把分步步骤详细呈上。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值