备注:
  比较简单就是使用nodejs 的两个类库帮助我们进行开发而已,具体的使用参考类库文档
1. 项目初始化
a. 安装依赖
yarn init -y
yarn add commander inquirer ├── README.md
├── bin
│ └── index.js
├── package.json
└── yarn.lock
2. 项目代码
a. package.json

{
"name": "mynode-cli",
"version": "1.0.2",
"main": "bin/index.js",
"license": "MIT",
"dependencies": {
"commander": "^2.12.2",
"inquirer": "^4.0.2"
},
"bin": {
"mynode-cli":"bin/index.js"
},
"scripts": {
"publish":"npm publish",
"run-local":"node bin/index"
}
} b. bin/index.js 备注:主要操作
#!/usr/bin/env node const Program = require("commander");
const Prompt = require("inquirer");
const initQuestions = [{
type: 'list',
name: 'plattype',
message: '请选择平台类型?',
choices: [
'pass',
'sass',
'iaas'
]
},
{
type: 'list',
name: 'vmCounts',
message: '请选择您包含的虚拟机数量?',
choices: ['100', '200', '500', '1000']
}
];
const loginQuestions = [{
type: 'input',
name: 'username',
message: '请输入用户名',
},
{
type: 'password',
name: 'password',
message: '请输入用户密码'
}
]; Program
.version("0.1.0")
.description("系统平台初始化工具")
.option("-i, --init","平台初始化") Program
.command("init")
.alias("i")
.description("初始化平台")
.action(() => {
Prompt.prompt(initQuestions).then(result => {
console.log("您选择的平台类型信息如下:");
console.log(JSON.stringify(result));
})
});
Program
.command("login")
.alias("l")
.description("登陆平台")
.action(() => {
Prompt.prompt(loginQuestions).then(result => {
console.log("您登陆的账户信息如下:");
console.log(JSON.stringify(result));
})
})
Program.parse(process.argv);
3. 使用
a. 安装
npm install -g mynode-cli
b. 使用
mynode-cli -i init
mynode-cli -i login
mynode-cli -h
参考界面如下:
 
 
 
4. 总结
还是比较简单的,同时有一个npm 包create-new-cli也是一个不错的选择
5.参考资料
https://www.npmjs.com/package/commander
https://www.npmjs.com/package/inquirer
https://github.com/rongfengliang/mynode-cli
 
 
 
 

使用 commander && inquirer 构建专业的node cli的更多相关文章

  1. Node & CLI

    Node & CLI cli 生成文件的原理是什么 https://nodejs.org/api/cli.html http://nodejs.cn/api/cli.html CLI & ...

  2. how to read the system information by using the node cli tool?

    how to read the system information by using the node cli tool? node cli & get system info demos ...

  3. node cli & emoji

    node cli & emoji cli $ yarn add node-emoji $ npm i node-emoji https://github.com/omnidan/node-em ...

  4. write a node cli tools, step by step

    write a node cli tools, step by step how to write a node cli tools node cli tools, step by step, nod ...

  5. linux & node & cli & exit(0) & exit(1)

    linux & node & cli & exit(0) & exit(1) exit(0) & exit(1) demo exit(0) === OK exi ...

  6. how to write a node cli tool

    how to write a node cli tool https://www.google.com/search?q=how+to+node+cli+tool&oq=how+to+node ...

  7. commander.js 制作简易的 MINA CLI 脚手架

    出发点并不是小程序本身,是想要做一个脚手架(command-line interface),看过 VUE / REACT 脚手架,觉得很厉害,但是并不太知道里面是怎么做成的,所以最近研究了研究,看能不 ...

  8. 用commander.js构建自己的脚手架工具

    随着前端技术的发展,工程化逐渐成为了一种趋势.但在实际开发时,搭建项目是一件很繁琐的事情,尤其是在对一个框架的用法还不熟悉的时候.于是很多框架都自带一套脚手架工具,在初始化前端项目的时候就可以不用自己 ...

  9. 使用distillery 构建专业的 phoenix 项目软件包

    备注:     首先需要安装 elixir 环境   1. 基本项目说明 参考项目: https://github.com/rongfengliang/phoenix-rest-demo 2. 项目说 ...

随机推荐

  1. 全--教程API, gem 'rest-client'(用于发简单请求); 请求测试;

    安装:rest-client4400✨ gem install rest-client 一个简单的HTTP和REST client for Ruby. 可以用它来发HTTP请求 基本用法: requi ...

  2. 阅读《大型网站技术架构:核心原理与案例分析》第五、六、七章,结合《XXX重大技术需求征集系统》,列举实例分析采用的可用性和可修改性战术,将上述内容撰写成一篇1500字左右的博客阐述你的观点。

    这三章主要讲述的是网站的可用性.伸缩性和可扩展性. 首先,网站的可用性描述网站可有效访问的特性,相比于网站的其他非功能特性,网站的可用性更容易引起人们的注意,尤其是大型网站的可用性,如果大公司的网站出 ...

  3. phpMyAdmin 应用程序“DEFAULT WEB SITE”中的服务器错误

    分析原因:没有“C:\inetpub\wwwroot\phpmyadmin\”此目录 解决办法:新建路径 分析原因:IIS设置少了一项,需添加"服务端包含"选项 解决办法:控制面板 ...

  4. Ansible 小手册系列 十二(Facts)

    Facts 是用来采集目标系统信息的,具体是用setup模块来采集得. 使用setup模块来获取目标系统信息 ansible hostname -m setup 仅显示与ansible相关的内存信息 ...

  5. C++复习6.C/C++高级数据类型

    C/C++高级数据类型 1.C语言支持把基本数据类型组合起来形成更加强大的构造数据类型,就是C语言的struct(UDT, User Defined Type). Struct 和class : 在C ...

  6. Docker的大坑小洼(一)

    Docker的大坑小洼 Posted on March 2, 2015March 2, 2015 by 孙宏亮 Docker成为云计算领域的新宠儿已经是不争的事实,作为高速发展的开源项目,难免存在这样 ...

  7. js 计算时间

    var date1=new Date();  //开始时间   var date2=new Date();    //结束时间 var date3=date2.getTime()-date1.getT ...

  8. python蛋痛的依赖管理

    java有maven 来统一管理项目依赖.初学python不久还没发现类似这样的工具.只有暂时用这个方法来手动操作了. 你可以用pip导出你的dependency: $ pip freeze > ...

  9. procrdure存储过程

    /* 存储过程 在一些语言中,有一个概念叫”过程“ procedure,和”函数“ function 过程:封装了若干条语句,调用时,这些封装体执行 函数:是一个有返回值的“过程” 过程:没有返回值的 ...

  10. awk与sed:一个关于多行处理的例子

    前几天在CSDN上看到一个帖子http://bbs.csdn.net/topics/390848841,楼主贴了下面的问题: 例: 12345 67890 1234567890 123 4567890 ...