从零实现一个命令行工具

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

具体实现效果如下:

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

1.初始化和设置ShaBang

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

index.js

#! /usr/bin/env nodeconsole.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来配置命令行参数等等。

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

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

  1. 18 个终端命令行工具,绝对让你感觉自己像个10倍程序员

    来自:掘金 作者:lcomplete 链接:http://33h.co/wquzt 终端是程序员的必备工具之一,10 倍程序员的终端跟普通程序员有何不同?本文将介绍许多牛逼且实用的开源工具,用上这些工 ...

  2. 能直接下载了!微软最爽命令行工具登陆Windows 10,GitHub标星已破4万6

    乾明 发自 凹非寺  量子位 报道 | 公众号 QbitAI 微软正式放出命令行工具Windows Terminal. 这个在发布之际就引得开发者大呼"WoW!Awesome!My God! ...

  3. 命令行使用.so文件内的函数_如何使用SFC命令行工具修复Windows 10系统文件

    当你的 Windows 10 出现随机错误.开机之后报错或组件无法正常工作等情况,很可能是一个或多个 Windows 文件丢失或损坏造成的.即便为了保证电脑能够正常运行,Windows 10 对自身做 ...

  4. 如何在redhat8里使用gcc命令_如何使用DISM命令行工具修复Windows 10映像

    Windows 10 中内置了一个被称为 DISM 的「部署映像服务和管理」命令行工具,该工具从 Windows 8 便开始内置,直到 Windows 10. DISM 命令行工具可用于修复和准备 W ...

  5. dos命令行设置网络优先级_替代windows系统下cmd的10款命令行工具

    喜欢用linux系统的或者从事开发编程的朋友可能会经常用到命令行工具,下面会整理一些windows下命令行工具. 1.powershell 系统自带 powershell 它可以说cmd的升级版.补充 ...

  6. 《现代命令行工具指南》10. 管理工具:在隔离环境中安装和运行 Python 命令行工具 - Pipx

    ​好工具就是生产力,这是专栏<现代命令行工具指南>精讲的第 10 个命令行工具,欢迎品鉴. 很多强大的命令行工具都是用 Python 编写的,比如,poetry.trash-cli.bla ...

  7. 10 款更先进的开源命令行工具

    Linux 诞生于 1991 年,我们熟知的 ls.cd.ps 等命令也出生于那个年代.虽然它们都是 30 年前的产物,但是我们现在依旧每天都在用这些命令. 也许是审美疲劳又或是好奇心作祟,你可曾好奇 ...

  8. windows使用linux命令行工具,替代Windows系统下cmd的10款命令行工具

    喜欢用Linux系统的或者从事开发编程的朋友可能会经常用到命令行工具,下面会整理一些Windows下命令行工具. 1.powershell 系统自带 powershell 它可以说cmd的升级版.补充 ...

  9. 10个Linux 系统性能监控命令行工具

    引言: 系统一旦跑起来,我们就希望它能够稳定运行,不要宕机,不出现速度变慢.因此,对于Linux 系统管理员来说每天监控和调试 Linux 系统的性能问题是一项繁重却又重要的工作.监控和保持系统启动并 ...

最新文章

  1. Per Johansson:经济学中自然实验和准实验 | 周日直播·因果科学读书会
  2. 每年的智能车竞赛赛道是如何产生的?
  3. 水电收费系统开发日志(一)
  4. python发送文件给微信好友_Python定时自动给微信好友发送天气预报
  5. Ubuntu文本编辑(vi和nano)命令
  6. 神州英才战略盈利竞争力总结
  7. java 获取当前月份的第一天_JAVA获取本月的第一天和最后一天
  8. (一)、http原理
  9. 教你玩转CSS的所有字体,走过路过不要错过!!!
  10. screen 断开 screen -r 不能进入断开的会话
  11. Mysql 零距离-入门(六)数据唯一约束性
  12. Android百度地图开发之开发第一个小应用,显示基础的地图页面
  13. 解决重启centos后resolv.conf总被清空的问题
  14. 2018年AI如何发展?普华永道做出了8点预测 | 报告下载
  15. python和java学哪个好-Python和Java该学哪个?还在纠结的你看过来呀~
  16. 编程也讲禅,您读过《金刚经》吗?——ADO.NET核心类的灭度与SQLHelper的诞生——十八相送(上)...
  17. [转载]jQuery操作Table学习总结
  18. 菜鸟的JavaScript自学笔记整理
  19. October cms-Plugins(插件-注册)
  20. brew - 切换为国内源

热门文章

  1. centos7安装telnet看“星球大战”
  2. wifi网络接入原理(上)——扫描Scanning
  3. 古剑奇谭三已取消该页导航,B站版本无法登陆
  4. android的camera学习(2)——底层驱动分析
  5. 分享基因--MindMaster
  6. python列表操作之删除数据
  7. 设计模式-中介者模式(Mediator Pattern)
  8. plt.contourf
  9. win10子系统ubuntu(WSL) 安装Docker
  10. Ubuntu切换登录用户和root用户