yargs介绍
Yargs be a node.js library fer hearties tryin’ ter parse optstrings
Yargs 框架通过使用 Node.js 构建功能全面的命令行应用,它能轻松配置命令,解析多个参数,并设置快捷方式等,还能自动生成帮助菜单。lerna源码使用yargs。
命令介绍
当我们想通过vue-cli来创建一个vue项目。我们会运行vue create app。那么vue是如何成为一个全局命令的?在控制台输入which vue。我们将会得到一个路径,进入该路径,执行ls -la可以看到vue命令是一个软连接。指向本地vue安装路径。
$ which vue
$ cd /usr/local/bin
$ ls -la
lrwxr-xr-x 1 admin admin 62 9 2 19:44 vue -> ../../../Users/admin/.config/yarn/global/node_modules/.bin/vue
我们在控制台输入指令后,系统会通过软连接,找到执行文件。
$ cd ../../../Users/admin/.config/yarn/global/node_modules/.bin/ cat vue
通过上述命令,可以找到vue命令的执行文件。 在文件的开头可以看到这样一行代码。#!/usr/bin/env node 用于指明该脚本文件要使用node来执行。
#!/usr/bin/env node
命令组成
程序员对命令都再熟悉不过了。我们日常开发中。经常需要使用命令在中间去执行一些操作。比如git等。我们日常输入的命令有一些不同类型。那么命令是怎么组成的。
git add
git -v
git rebase -i
command [-options] [parameter]
- command:命令名, 比如: ls、pwd
- [-options]:选项,可以有零个、一个或者多个选项,多个选项可以合并,比如使用的 -r 就是选项。 【如: ls -l -a】
- [parameter]:参数,可以有零个、一个 或者 多个参数, 比如: touch 文件名、mkdir 目录名、cd 目标目录(路径),这些文件名和目录名都是参数。 【touch 1.txt 2.txt】
- []:代表可选
node相关知识点了解(熟悉可跳过)
在介绍yargs的使用之前,我们先来看一下nodejs相关的api,帮助我们更好的使用和了解yargs。熟悉argv的同学可直接跳过本小节介绍。
argv介绍
在使用yargs之前,我们西拿来了解一下node process.argv。node有一个全局对象process,通过process可以获取argv。
- process 对象提供有关当前 Node.js 进程的信息并对其进行控制。
- process.argv 返回数组,其中包含启动 Node.js 进程时传入的命令行参数。
通过一个小栗子,可以直观的了解到argv。首先我们在本地新建一个index.js文件。内容如下
console.log(process.argv)
接着通过nodejs执行该文件。在控制台输入,node index.js test
我们会在控制台得到一个数组
[ '/Users/admin/.nvm/versions/node/v12.22.3/bin/node', '/Users/admin/Documents/test/index.js', 'test']
process.argv[0]表示启动node进程的绝对路径 process.argv[1]表示当前文件的绝对路径 process.argv[2]之后则是我们在命令里面输入的参数
yargs 使用
基础
- 安装依赖
$ npm i yargs
- 引入
const yargs = requier('yargs/yargs')
// or
import yargs from 'yargs' // 从v16起,支持ESM import
本地初始化一个项目
$ mkdir demo
$ cd demo
$ npm init -y
在package里面加入bin
{
"name": "demo",
···
"bin":{
"cli-test":"bin/index.js"
}
}
创建一个index.js,在js文件的开头加入#!/usr/bin/env node
#!/usr/bin/env node
const yargs = require('yargs/yargs')
const {hideBin} = require('yargs/helpers')
const arg = hideBin(process.argv)
// hideBin功能相当于process.argv.slice(2)。但是他兼容环境的变化。如Electron
const cli = yargs(arg)
console.log(cli)
在根目录执行npm link 给cli-test添加软连接。后面可以直接在控制台输入cli-test
$ cli-test
cli Jt {
customScriptName: false,
parsed: false,
'$0': 'cli-text',
argv: [cli-test]
}
$ cli-text --version
$ cli-text --help
yargs自带version和help的功能。
yargs功能
usage
cli.usage('Usage: test [command] <options>')
$ cli-test --help
Usage: test [command] <options>
选项:
--help 显示帮助信息 [布尔]
--version 显示版本号 [布尔]
option
cli.option('optionTest',{type:"boolean",describe:'this is a option test',alias:'ot'}).argv
$ cli-test -h
运行cli-test -h 可以看到控制台打印出option选项
--optionTest, --ot this is a option test [布尔]
command添加一个命令
cli.command('test','this is a test command',(yargs)=>{},(argv)=>{}).argv
$ cli-test test
alias设置别名
cli.alias('v','version')
cli.alias('h','help')
$ cli-test -v
$ cli-test -h
wrap设置宽度
cli.wrap(100).argv
grounp option分组在展示
cli.option('debugTest',{type:"boolean",describe:'this is a option test',alias:'ot'})
.group(['debugTest'],'dev option')
.argv
$ cli-test -h
Usage: test [command] <options>
命令:
cli-test test this is a test command
dev option
--debugTest, --ot this is a option test [布尔]
选项:
--optionTest, --ot this is a option test [布尔]
-v, --version 显示版本号 [布尔]
-h, --help 显示帮助信息 [布尔]
epilogue在控制面板底部显示的文案
cli..epilogue('bottom text').argv
$ cli-test -h
$ cli-test -h
-v, --version 显示版本号 [布尔]
-h, --help 显示帮助信息 [布尔]
bottom text
recommendCommands 命令纠错提示
cli
.recommendCommands()
.command('list','starg',(yargs)=>{
return yargs
},()=>{})
.argv
$ cli-test li
cli-test [命令]
命令:
cli-test list starg
选项:
-v, --version 显示版本号 [布尔]
-h, --help 显示帮助信息 [布尔]
是指 list?
今天的文章【yargs】使用教程——version-17.2.0分享到此就结束了,感谢您的阅读。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/15267.html