首页 » 小蓝 » 总结一些最近写Command Line Tool 的一些心得

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


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

windows的话,我就没研究了。

命令所在的源码目录

__dirname

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

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

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

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

当前目录

process.cwd()

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

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

注意 EOL 的坑

require('os').EOL

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

不过注意有一个坑

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

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