文章目录
  1. 1. mark 下两个比较好用命令参数处理工具

mark 下两个比较好用命令参数处理工具

最近写的命令行工具涉及到处理命令输入的参数,
我都是process.argv.slice(2) 去去处理的,看到zswang写的
项目中用的optimist 瞬间觉得自己弱爆了。于是就去npmjs
搜了搜,使用下觉得很方便,但是作者给出了建议

I don’t want to maintain this module anymore since I just use minimist, the argument parsing engine, directly instead nowadays.

意思是说,更牛逼的是minimist, 接着又去看了这货,并且各自实验了,的却minimist更便捷些
不过唯一不好的是minimist不能在什么都不输入的时候给出每个参数的help 提示,不过可已少做处理
打印个字符串提示就好了,看到有个很好的实现是把提示信息注释写在一个function ,返回function
的tostring 然后用正则匹配加上点颜色就好了。

在这里记录下,分别列出两个的使用。

test-minimist.js

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
/**
* minimist not has describe
* you can show tips by self
* 这个没有像optimist 中的描述
* 可以自己手动去实现,就是如果没有输入
* 任何参数就输出help 提示信息
*
*
*/


var _ = require('underscore');
var colors = require('colors/safe');
var minimist = require('minimist');
var argv = process.argv.slice(2);
var aparams = ['x','y'];
var parseArgv = minimist(argv, {
alias: {
x:'x and y ,is what',
f: ['f1', 'f2', 'f3']
}
});
var areqParamKeys = Object.keys(parseArgv);
console.log(colors.red(areqParamKeys.join()));
// cyan 是colors 的一种颜色
if (areqParamKeys.join() == '_' || _.uniq(areqParamKeys, aparams).length < 1) {
console.log(
String(function () {
/*
Usage:

#{h5,yellow}#{psd,blue} <input list> [options]

Options:

#{-v, --version,cyan} Output sdfs.
#{-o, --output,cyan} Output sdfdsf).
#{-s, --images,cyan} Images sdfsf.
*/

})
.replace(/[^]*\/\*!?\s*|\s*\*\/[^]*/g, '')
.replace(/#\{(.*?),(\w+)\}/g, function (all, text, color) {
return colors[color](text);
})
);
}
console.log(parseArgv);

test-optimist.js

1
2
3
4
5
6
7
8
9
10
11
12
13
14
var colors = require('colors/safe');
var argv = require('optimist')
.demand('f')
.alias('f', 'file')
.describe('f', colors.red('load a file'))
.demand('x').
alias('x','y')
.describe('x', 'x or y')
.options('z',{
alias: 'z',
describe: 'zz sdfsf '
})
.argv;
console.log(argv);
文章目录
  1. 1. mark 下两个比较好用命令参数处理工具