Quantcast
Channel: CNode:Node.js专业中文社区
Viewing all articles
Browse latest Browse all 14821

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

$
0
0

总结一些最近写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 中也比较常用,可以让你生成一些本地文件,或者配置文件。 LinuxOSX中,可以通过环境变量来获取。

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

windows的话,我就没研究了。

命令所在的源码目录

__dirname

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

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

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

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

当前目录

process.cwd()

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

要活用以上两个目录,在写 Command Line Tool 的时候会经常用到。

注意 EOL 的坑

require('os').EOL

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

不过注意有一个坑

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

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


Viewing all articles
Browse latest Browse all 14821

Trending Articles