开发CLI命令行

命令行工具:CLI 是在命令行终端使用的工具,如git, npm, vim 都是CLI工具。比如我们可以通过 git clone 等命令简单把远程代码复制到本地

和 cli 相对的是图形用户界面(gui),gui 侧重于易用,cli 则侧重于效率。

如何开发一个CLI工具?

先初始化一个项目:

mkdir  plgcli
cd plgcli

创建 plgcli文件夹, 进入文件夹
修改 package.json文件,增加bin字段

{
  "name": "plgcli",
  "version": "1.0.0",
  "description": "PLG CLI tool",
  "main": "index.js",
  "bin": {
    "PLG": "./bin/index.js"
  },
  "scripts": {
    "test": "test"
  },
  "keywords": [
    "PLG",
    "CLI",
    "Tool"
  ],
  "author": "winyh",
  "license": "ISC",
  "dependencies": {
    "commander": "^2.20.0"
  }
}

  运行 node index.js

#!/usr/bin/env node
console.log(‘hello ‘)

  一般 cli都有一个特定的命令,比如 git,刚才使用的 code 等,我们也需要设置一个命令,就叫 PLG 吧!如何让终端识别这个命令呢?很简单,打开 package.json 文件,添加一个字段 bin,并且声明一个命令关键字和对应执行的文件:如上

然后我们测试一下,在终端中输入 PLG,会提示:

command not found: PLG

为什么会这样呢?回想一下,通常我们在使用一个 cli 工具时,都需要先安装它

而我们的 PLG-cli 并没有发布到 npm 上,当然也没有安装过了,所以终端现在还不认识这个命令。通常我们想本地测试一个 npm 包,可以使用:npm link 这个命令,本地安装这个包,我们执行一下

然后再执行

PLG

命令,看正确输出 hello world! 了

1.完成查看版本的功能

如PLG -v

有两个问题

1.如何获取参数?

2.如何获取版本信息?

在 node 程序中,通过 process.argv 可获取到命令的参数,以数组返回

2.执行复杂命令

有点多个参数时,或者或者像新建项目这种需要用户输入项目名称(我们称作“问答”)的命令时,通过 switch case  和 process.argv  获取参数就力不从心了,这时需要引入专门处理命令行交互的包commander.提供了用户命令行输入和参数解析强大功能

commander已经为我们创建好了帮助信息,以及两个参数 -V 和 -h

3.添加问答操作

引入inquirer包文件,修改 index.js文件

#!/usr/bin/env node
const program = require(‘commander‘);
const inquirer = require("inquirer");
const initAction = () => {
    inquirer.prompt([{
        type:"input",
        message:"请输入项目名称:",
        name:‘name‘
    }]).then( answers => {
        console.log(`项目名为: ${answers.name}`)
    })
}
program.version(require("../package.json").version)

program
    .command("init")
    .description("创建项目")
    .action(initAction)

program.parse(process.argv)

  

4.运行shell脚本

引入shelljs库

5.cli 工具发布到 npm

npm publish

原文地址:https://www.cnblogs.com/winyh/p/11125625.html

时间: 2024-08-29 07:25:25

开发CLI命令行的相关文章

如何在CLI命令行下运行PHP脚本,同时向PHP脚本传递参数?

<?php/* //命令行输入输出流fwrite(STDOUT,"Enter your name:");$name = trim(fgets(STDOUT));fwrite(STDOUT,"hello,$name");*/echo $argc;if ($argc > 1){print_r($argv);} ?> 另存为 ./test.php [[email protected] test]# php  ./test.php xxx fdf 3Arr

Android开发DOS命令行创建AVD

命令行工具 android –h 帮助命令,可用来确认安装配置是否成功,并且可以看到其他的命令. 运行后结果如下图: 创建AVD虚拟设备 android create avd –n <name> -t <targetID>[-<option><value>] <name>是要创建的AVD的名称 <targetID>是Available Android Targets,即使用的SDK版本,可以输入下列命令获得: android list

使用CLI命令行部署VMware VCSA 6.5

在本文中,我们讨论如何使用CLI部署VMware vCSA 6.5,vCSA 6.0提供了两种实现类型,向导和脚本化.vCSA使用CLI.我们将使用一个名为vcsa-deploy的实用程序.同样vcsa-deploy使您能够为vCSA VMware执行安装,升级和迁移. 还有这种操作?对!这种操作是很先进的,省去了鼠标点击了都.66666啊 注意事项: CLI部署需要用到python运行环境,python下载:http://www.python.org/downloads/ 6.7版本json配

在cli命令行上显示当前数据库,以及查询表的行头信息

在$HIVE_HOME/conf/hive-site.xml文件下加入以下配置文件 <property> <name>hive.cli.print.header</name> <value>true</value> <description>Whether to print the names of the columns in query output.</description> </property> &

linux常用开发工具命令行

如何用nodejs 开发一个命令行交互工具

参考地址1.参考地址2 一.npm package.json bin 1.package.json { "name": "test", "version": "1.0.0", "description": "", "main": "index.js", "scripts": { "test": "e

atitit.基于&#160;&#160;Commons&#160;CLI&#160;的命令行原理与&#160;开发

atitit.基于  Commons CLI 的命令行原理与 开发 1. 命令行支持的格式有以下几种:1 2. json化,map化的命令行参数内部表示1 3. Ati cli2 4. CLI库支持不同格式的选项: 2 5. 参考3 1. 命令行支持的格式有以下几种: 基于 Apache Commons CLI 的命令行开发 Apache Commons CLI 简介 Apache Commons CLI 是 Apache 下面的一个解析命令行输入的工具包,该工具包还提供了自动生成输出帮助文档的

使用.NET Core快速开发一个较正规的命令行应用程序

程序员的世界,命令行工具一直是"体验非常友好"的工具,也能自动化完成很多事情,同时还能结合shell来进行某项任务的批处理(脚本).在.NET Core中,命令行应用程序是基础,但是如何实现像 "cat" 这种功能呢?今天就为大家介绍一个packages来优雅的实现一个命令行应用程序. 一般命令行程序包含什么? 使用方式 帮助信息 子命令 参数 选项 帮助信息 帮助信息如上,介绍了命令的作用和参数.选项作用. 这个是必不可少的. 子命令 一个应用程序打包了多个功能,

Java命令行程序构建工具-airline

以前对于开发Java命令行程序,我都是很头大的,命令行程序麻烦的是解析参数,以及一些帮助信息,今天在研究接口测试时偶然发现了一个工具可以让你快速构建命令行程序 github地址 airline 导入jar包 airline jar 在maven仓库里搜索适合你构建系统的语句 代码 我找了个解析har文件的项目,来讲解开发过程 定制自己的命令行 我的命令行以doctorq作为命令,参数为company,命令的完整格式应该为doctorq company XXXXX. @Command(name="