- const {hideBin} = require('yargs/helpers') 用来解析参数
- yargs(arg).argv
- strict 显示报错信息,当输入一个不存在的命令 并且从已经定义的命令中找不到相似的命令,会给出报错
- Usage 提示用法;demandCommand 推荐指令使用方式,当错误的时候 会提示
- alias 给指定起别名
- warp 用来控制终端输出的宽度; yargs(arg).terminalWidth()用来获取本地终端的宽度;100定义输出宽度是100
- options 主要是给yargs对象增加一个全局的选项,可以定义多个 即对所有的command都有效,别名也可以通过图二的方式,推荐第一种
- option 定义单个选项
- group 对option 进行分组
- 定义command
最后显示 '$0' 显示的是脚手架
- command 定义的另外一种方式:对象
- recommendCommands 当命令不存在的时候 会遍历已经存在的命令 有相似的命令 给出相应的提示
- fail 可以使我们对错误命令 做定制化处理,即不满足demandRecommand方法的指令 都会落到fail处理
- parse的使用
const pkg = require('../package.json')
const yargs = require('yargs/yargs');
const {hideBin} = require('yargs/helpers')
const arg = hideBin(process.argv) // 作用解析参数,用来获取process.argv第2个参数往后的数据
console.log('----process',process.argv); // 打印的是数组
console.log('----arg',arg);
const context = {
immocVersion:pkg.version
}
yargs(arg)
.usage('Usage: immoc-petra2 [command] <options>')
.demandCommand(1,'A command is required.Pass --help to see all available commands and options')
.strict()
.recommendCommands()
.fail((err,msg)=> {
console.log(err);
})
.alias('h','help')
.alias('v','version')
// .wrap(yargs(arg).terminalWidth())
// .wrap(100)
.epilogue('your own footer description')
.options({
debug: {
type:'string',
describe:'Bootstrap debug mode',
alias:'d'
}
})
.option('registry',{
type:'string',
describe:'define global registry',
alias:'r'
})
.group(['debug'],'Dev Options:')
.group(['registry'],'Extra Options:')
.command('init [name]','Do init a project',(yargs)=> {
return yargs.option('name',{
type:'string',
describe:'Name of a project',
alias:'n'
})
},(argv)=> {
console.log(argv);
})
.command({
command:'list',
aliases:['ls','ll','la'],
describe:'List local Packages',
builder:(yargs)=> {},
handler:(argv)=> {
console.log('-------------',argv);
}
})
.argv
在终端执行 immoc-petra2 list -v; console对应的结果:
console.log('----process',process.argv);
console.log('----arg',arg);
console.log('-------------',argv);
现在不使用const {hideBin} = require('yargs/helpers');const arg = hideBin(process.argv) 解析参数, 使用parse
const pkg = require('../package.json')
const yargs = require('yargs/yargs');
const {hideBin} = require('yargs/helpers')
const arg = hideBin(process.argv)
console.log('----process',process.argv);
console.log('----arg',arg);
const context = {
immocVersion:pkg.version
}
// 此时不王yargs传递arg参数
yargs()
.usage('Usage: immoc-petra2 [command] <options>')
.demandCommand(1,'A command is required.Pass --help to see all available commands and options')
.strict()
.recommendCommands()
.fail((err,msg)=> {
console.log(err);
})
.alias('h','help')
.alias('v','version')
// .wrap(yargs(arg).terminalWidth())
// .wrap(100)
.epilogue('your own footer description')
.options({
debug: {
type:'string',
describe:'Bootstrap debug mode',
alias:'d'
}
})
.option('registry',{
type:'string',
describe:'define global registry',
alias:'r'
})
.group(['debug'],'Dev Options:')
.group(['registry'],'Extra Options:')
.command('init [name]','Do init a project',(yargs)=> {
return yargs.option('name',{
type:'string',
describe:'Name of a project',
alias:'n'
})
},(argv)=> {
console.log(argv);
})
.command({
command:'list',
aliases:['ls','ll','la'],
describe:'List local Packages',
builder:(yargs)=> {},
handler:(argv)=> {
console.log('-------------',argv);
}
})
.parse(process.argv.slice(2),context)
// .argv
解析结果:
parse的好处 第一个参数和第二个参数合并 注入到当前的脚手架当中