第三方包_nopt - dkvirus/npm-resource-read GitHub Wiki
说明
命令行选项解析器,见过最强大的解析器,没有之一。
什么是命令行?$ npm install nopt --save。
程序。其中第一个单词npm肯定是程序名称;命令。install是具体的命令,要做什么事儿,英文叫做command;参数。nopt是命令后面跟的参数;选项。--save这种由-或者--开头的就叫做选项,辅助功能,如这里安装包是主要任务,将安装的包名记录在 package.json 中就是--save干的事了。
使用前先安装:$ npm install nopt。
示例
example1:获取选项参数
// test1.js
var nopt = require("nopt")
// 具体的选项,后面跟值类型
var knownOpts = {
"save" : Boolean,
"file": [String],
"number": [Number],
}
var parsed = nopt(knownOpt)
console.log(parsed)
在终端运行,加上参数。
$ node test1.js --save
{ "save": true }
$ node test1.js --no-save
{ "save": false } // 虽然没定义 --no-save 选项,但定义了 save,这里自动取反
$ node test1.js --file "test1.js"
{ "file": "test1.js" }
$ node test1.js --number "12"
{ "number": 12 } // 虽然穿的是字符串,但是设置了number只接收数值,这里自动转化
example2:选项参数简写
// test2.js
var nopt = require("nopt")
// 具体的选项,后面跟值类型
var knownOpts = {
"save" : Boolean,
"file": [String],
"number": [Number],
}
// 简写,本来要写 --file,简写只要写 -f 即可
var shortHands = {
"n": ["--number"],
"s": ["--save"],
"f": ["--file"]
}
var parsed = nopt(knownOpts, shortHands)
console.log(parsed)
运行打印参数如下:
$ node test2.js -f "test2.js"
{ "file": "test2.js" }
$ node test2.js -sf "test2.js"
{ "save": true, "file": "test2.js" } // 合并写法,tar -czvf "xxxx" 就是这么处理的
example3:获取命令参数
// test3.js
var nopt = require("nopt")
// 具体的选项,后面跟值类型
var knownOpts = {
"save" : Boolean,
"file": [String],
"number": [Number],
}
// 简写,本来要写 --file,简写只要写 -f 即可
var shortHands = {
"n": ["--number"],
"s": ["--save"],
"f": ["--file"]
}
var parsed = nopt(knownOpt, shortHands)
console.log(parsed)
运行,最原始的命令行数据在 argv.original 中,去除选项后的数据在 argv.remain 中。
$ node test3.js install nopt --save
{
"save": "true",
{ argv:
{ remain: [ 'install', 'nopt' ],
cooked: [ 'install', 'nopt', "--save" ],
original: [ 'install', 'nopt', "--save" ] } }
}