前端技术之:如何创建一个NodeJs命令行交互项目

方法一:通过原生的NodeJs API,方法如下:

#!/usr/bin/env node

# test.js

var argv = process.argv;

console.log(argv)

通过以下命令执行:

node test.js param1 --param2 -param3

结果输出如下:

[ ‘/usr/local/Cellar/node/10.10.0/bin/node‘,

‘test.js‘,

‘param1‘,

‘--param2‘,

‘-param3‘ ]

可见,argv中第一个参数为node应用程序的路径,第二个参数为被执行的js程序文件,其余为执行参数。

方法二:通过yargs获取命令行参数,方法如下:

首先,需要在项目中引入该模块:

npm install --save args

然后,创建JS可执行程序,如下:

#!/usr/bin/env node

var args = require(‘yargs‘);

const argv = args.option(‘n‘, {

alias : ‘name‘,

demand: true,

default: ‘tom‘,

describe: ‘your name‘,

type: ‘string‘

})

.usage(‘Usage: hello [options]‘)

.example(‘hello -n bob‘, ‘say hello to Bob‘)

.help(‘h‘)

.alias(‘h‘, ‘help‘)

.argv;

console.log(‘the args:‘, argv)

执行如下命令:

node test.js -h

显示结果如下:

Usage: hello [options]

选项:

--version   显示版本号                                                  [布尔]

-n, --name  your name                          [字符串] [必需] [默认值: "tom"]

-h, --help  显示帮助信息                                                [布尔]

示例:

hello -n bob  say hello to Bob

执行如下命令:

node test.js -n Bobbbb ‘we are friends‘

结果显示如下:

the args: { _: [ ‘we are friends‘ ],

n: ‘Bobbbb‘,

name: ‘Bobbbb‘,

‘$0‘: ‘test.js‘ }

可见,通过yargs开源NPM包,可以很容易定义命令行格式,并方便地获取各种形式的命令行参数。

通过yargs虽然可以很方便地定义并获取命令行参数,但不能很好地解决与命令行的交互,而且参数的数据类型也比较受局限。所以,我们看一下另外一个开源项目。

方法三:通过inquirer开源项目实现交互命令

创建test.js文件:

#!/usr/bin/env node

var inquirer = require("inquirer");

inquirer

.prompt([

{

type: "input",

name: "name",

message: "controller name please",

validate: function(value) {

if (/.+/.test(value)) {

return true;

}

return "name is required";

}

},

{

type: "list",

name: "type",

message: "which type of conroller do you want to create?",

choices: [

{ name: "Normal Controller", value: "", checked: true },

{ name: "Restful Controller", value: "rest" },

{ name: "View Controller", value: "view" }

]

}

])

.then(answers => {

console.log(answers);

});

执行程序:

node test.js

输出结果:

? controller name please test

? which type of conroller do you want to create? Normal Controller

{ name: ‘test‘, type: ‘‘ }

参考资料:

https://github.com/yargs/yargs

https://github.com/SBoudrias/Inquirer.js

原文地址:https://www.cnblogs.com/popgis/p/11809819.html

时间: 2024-11-10 11:02:43

前端技术之:如何创建一个NodeJs命令行交互项目的相关文章

nodejs 命令行交互

人机交互 function readSyncByfs(tips) { tips = tips || '> '; process.stdout.write(tips); process.stdin.pause(); const buf = Buffer.allocUnsafe(10000); let response = fs.readSync(process.stdin.fd, buf, 0, 10000, 0); process.stdin.end(); return buf.toString

一个使用命令行编译Android项目的工具类

一个使用命令行编译Android项目的工具类 简介 编译apk项目需要使用的几个工具,基本都在sdk中,它们分别是(Windows系统): 1.aapt.exe 资源打包工具 2.android.jar Android编译工具 3.dx.bat dex文件生成工具 4.sdklib.jar 生成apk 5.jarsigner 签名工具 准备 在打包前,需要的环境如下: 1.JDK1.6+ 2.Android SDK 3.上述5个工具的路径 打包过程 1.生成R.java文件 比如: aapt p

如何编写一个带命令行参数的Python文件

看到别人执行一个支持命令行参数的python文件,瞬间觉得高大上起来.牛逼起来,那么如何编写一个带命令行参数的python脚本呢?不用紧张,下面将简单易懂地让你学会如何让自己的python脚本,支持命令行参数. 首先你要知道python中的sys模块的一些功能: import sys print "the number of python program's argument:",len(sys.argv) print "the value of every argument

如何创建一个基于Maven的SmartGWT项目

如何创建一个基于Maven的SmartGWT项目 使用环境 Eclipse的版本为:Luna Service Release 2 (4.4.2)(这个其实不是很重要,你完全可以使用最新版本的Eclipse或者MyEclipse) Maven的版本为:3.1.0 SmartGWT的版本为:6.0p GWT的SDK版本为:2.7 前提准备 你需要安装Maven.如何安装Maven不是文本的内容,你可以参考我的关于Maven的博客. 把SmartGWT的jar包上传到私服服务器. 操作过程 创建GWT

libvirt 命令行交互工具之virsh

libvirt是当前主流VM最低层库.IBM PowerVM也不例外,libvirt是深入玩虚拟化必须玩转的东西; 简单测试玩玩libvirt 的virsh命令行交互工具, 你我都知识libvirt大体上主要有3个组件,分别是: 1. libvirt daemon进程 2. 命令行工具virsh 3. libvirt API virsh命令使用 virsh <command> <domain-id> [OPTIONS] virsh既有命令行模式,也有交互模式,在命令行直接输入vir

使用nodejs、ejsExcel、express、vuejs编写一个excel转json的工具——第一步:创建一个包含webpack的vuejs项目

最近开发一个h5的游戏,需要一个excel转json的工具,网上找了找,没有发现适合的工具.想到自己之前用nodejs.express和vuejs做过一个网站,也用过ejsExcel插件,于是自己动手做了一个.这里简单的记录一下开发过程,给自己留个纪念. 这是本系列的第一篇博客,从新建项目开始吧. 1.需要按照nodejs和vuejs 安装的方法这里不提了,网上找一找,教程很多. 安装好了可以看一下nodejs.vuejs和express的版本号: 2.使用vuejs创建一个带webpack的项

Cheat—— 给Linux初学者和管理员一个终极命令行&quot;备忘单&quot;

编译自:http://www.tecmint.com/cheat-command-line-cheat-sheet-for-linux-users/作者: Avishek Kumar原创:LCTT https://linux.cn/article-3760-1.html译者: su-kaiyao原文稍有改动 当你不确定你所运行的命令,尤其是那些使用了许多选项的复杂命令时,你会怎么做?在这种情况下,我们使用man pages来获取帮助.还有一些其它的选择可能包括像‘help’,‘whereis’和

打造一个全命令行的Android构建系统

IDE都是给小白程序猿的,大牛级别的程序猿一定是命令行控,终端控,你看大牛都是使用vim,emacs 就一切搞定" 这话说的尽管有些绝对.可是也不无道理.做开发这行要想效率高,自己主动化还真是缺少不了命令行工具,由于仅仅有命令行才是最佳的人机交互工具. 事实上IDE也是底层也是调用命令行工具而已,仅仅只是给普通开发人员呈现一个更友好的开发界面. 这里可不是宣扬让大家放弃IDE都改命令行,仅仅是每种事物都有他存在的理由,不管是编程语言还是工具都是一个原则 "没有最好的,仅仅有最合适的&q

玩转 Nodejs 命令行

背景 在做 cli 工具的时候,非常需要命令行相关的第三方库.一个比较稳健成熟的命令行应该考虑以下 4 种需求: 读取传入的各种参数,例如: --help, -v=123 逻辑处理和友好的 UI 交互,例如:提供列表选择 细致控制字体颜色和背景颜色 状态显示,例如:等待过程前面是转圈圈,完成过程前面自动换成对号 在开始前,安装一下需要用到的库: npm install --save inquirer npm install --save commander npm install --save