总结一些最近写Command Line Tool 的一些心得

总结一些最近写Command Line Tool 的一些心得

##yargs

npm install yargs --save
复制代码

yargs是优雅地接受命令行输入参数的模块,功能非常强大且易用,免去了很多重复的工作,一段代码足以证明:

const argv = require('yargs').argv; 

// argv 会自动接受所有输入参数 ,比如 demo_command -a hello

console.log(argv.a);  
//hello
复制代码

当然可以对 a做更多的配置

const yargs = require('yargs');

let argv = yargs.
options('a', {
  alias: 'api',
  default: 'all',
}).argv;
//这样可以给 argv.a设置一个默认值,同时有一个别名,如:demo --api hello
复制代码

更多的配置方式看github ##colors

npm install colors --save
复制代码

colors是用来控制命令行输出文本颜色的, 还有更多功能如 背景色、字体特效等我用得比较少,需要学全的请看github

//用起来也是特别简单,
const colors = require('colors');

//输出绿色的hello , 黄色的 world
console.log(colors.green('hello ') + colors.yellow('world'));
复制代码

更多预设颜色:black、red、green、yellow、blue、magenta、cyan、white、gray、grey

主要是用于命令行输出提示信息,如红色的error message ##readline-sync

npm install readline-sync --save
复制代码

readline-sync是同步获取用户输入的模块,主要用于带交互的基本输入。

常见的有询问用户是否同意 ,同意输入yes, 或者需要用户填写什么信息之类。

const readline = require('readline-sync');

let name = readline.question('What is your name? ', {defaultInput: 'Tom'});

console.log('Oh! I got it! You are '+name);
复制代码

输出:

$ node test.js 
What is your name? Gay  
Oh! I got it! You are Gay
复制代码

readline-sync的功能远远不止这样,还有很多交互方式,详情看github ##关于目录的一些问题####HOME HOME目录在Command Line 中也比较常用,可以让你生成一些本地文件,或者配置文件。 Linux和 OSX中,可以通过环境变量来获取。

process.env['HOME'];
//  当前用户的目录
复制代码

而windows的话,我就没研究了。 ####命令所在的源码目录

__dirname

当前执行的脚本的目录,不管你在哪个目录下调用,这个返回的都是源码所在目录
复制代码

这个指的是你当前命令的执行文件源码的目录(或理解为 安装目录)。

它的作用是,你可能需要从你开发的命令的源码里加载一些文件,或者模板。

比如 一些框架的脚手架 ,需要生产代码 ,自然就是从脚手架的目录里copy一份模板。 ####当前目录

process.cwd()
复制代码

这个是指你输入命令的当前目录。

要活用以上两个目录,在写 Command Line Tool 的时候会经常用到。** ###注意 EOL 的坑

require('os').EOL
复制代码

这是一个很方便的功能,它会抹平操作系统的差异性,返回一个换行符。 在你打印信息的时候十分常用。

不过注意有一个坑**

如果你需要生产一些文本文件,那你需要特别注意里面用的换行符。

比如我在linux下生成的配置文件,弄到 windows下就解释不出来了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值