使用nodejs开发cli项目实例


Posted in NodeJs onJune 03, 2015

1.分分钟使用默认选项安装完nodejs
2.分分钟使用sudo npm install -g yo安装完yeoman
3.通过sudo npm install -g generator-cli-starter安装cli开发脚手架

OK, 现在我们可以使用yo cli-starter命令开始我们cli开发之旅了

创建cli项目

yo cli-starter

按照提示输入项目名称、命令名称,完成cli项目创建。后续的教程中我们将使用hi作为你的命令名称,如果你使用了其他命令名称,请注意替换

Let's try first

现在命令行中输入如下命令(如果你用的不是hi,注意替换)

hi

效果如下:

使用nodejs开发cli项目实例

试个常见命令?

我们接下来就开发一个类似ls, ls -all的命令,这里面需要用到一个node模块commander,先来安装一下:

进入该项目根目录执行npm install --save commander,

然后用你喜欢的editor打开bin/hi.js,并用以下内容替换原先的代码:

#!/usr/bin/env node
'use strict';
var program = require('commander');
program

    .version('0.0.1');//声明hi的版本号
program

    .command('list')//声明hi下有一个命令叫list

    .description('list files in current working directory')//给出list这个命令的描述

    .option('-a, --all', 'Whether to display hidden files')//设置list这个命令的参数

    .action(function(options) {//list命令的实现体

        var fs = require('fs');

        //获取当前运行目录下的文件信息

        fs.readdir(process.cwd(), function(err, files) {

            var list = files;

            if (!options.all) {//检查用户是否给了--all或者-a的参数,如果没有,则过滤掉那些以.开头的文件

                list = files.filter(function(file) {

                    return file.indexOf('.') !== 0;

                });

            }

            console.log(list.join(' '));//控制台将所有文件名打印出来

        });

    });
program.parse(process.argv);//开始解析用户输入的命令

OK,现在来试试我们刚写好的命令吧,

hi -V

使用nodejs开发cli项目实例

hi list

使用nodejs开发cli项目实例

hi list -a

使用nodejs开发cli项目实例

如何发布

首先需要在Github上创建一个项目,并把我们刚才写的代码同步上去。

然后通过npm publish命令将你的cli发布到npm。

然后其他用户就可以通过npm install -g [项目名称]将你的命令安装到本地使用了

NodeJs 相关文章推荐
golang、python、php、c++、c、java、Nodejs性能对比
Mar 12 NodeJs
如何正确使用Nodejs 的 c++ module 链接到 OpenSSL
Aug 03 NodeJs
Nodejs异步回调的优雅处理方法
Sep 25 NodeJs
NodeJS Web应用监听sock文件实例
Feb 18 NodeJs
nodejs的压缩文件模块archiver用法示例
Jan 18 NodeJs
NodeJS基础API搭建服务器详细过程记录
Apr 01 NodeJs
详解nodeJS之路径PATH模块
May 31 NodeJs
Nodejs中crypto模块的安全知识讲解
Jan 03 NodeJs
Nodejs下使用gm圆形裁剪并合成图片的示例
Feb 22 NodeJs
Nodejs 和 Electron ubuntu下快速安装过程
May 04 NodeJs
nodejs实现聊天机器人功能
Sep 19 NodeJs
在NodeJs中使用node-schedule增加定时器任务的方法
Jun 08 NodeJs
nodejs实现遍历文件夹并统计文件大小
May 28 #NodeJs
nodejs实现获取某宝商品分类
May 28 #NodeJs
Nodejs实现批量下载妹纸图
May 28 #NodeJs
ubuntu下安装nodejs以及升级的办法
May 08 #NodeJs
浅谈NodeJS中require路径问题
May 07 #NodeJs
NodeJs中的VM模块详解
May 06 #NodeJs
nodejs简单实现中英文翻译
May 04 #NodeJs
You might like
PHP判断指定时间段的2个方法
2014/03/14 PHP
PHP中的闭包(匿名函数)浅析
2015/02/07 PHP
memcache一致性hash的php实现方法
2015/03/05 PHP
phpinfo() 中 Local Value(局部变量)Master Value(主变量) 的区别
2016/02/03 PHP
Laravel框架实现利用监听器进行sql语句记录功能
2018/06/06 PHP
PHP中的访问修饰符简单比较
2019/02/02 PHP
百度Popup.js弹出框进化版 拖拽小框架发布 兼容IE6/7/8,Firefox,Chrome
2010/04/13 Javascript
JQuery中each()的使用方法说明
2010/08/19 Javascript
IE6不能修改NAME问题的解决方法
2010/09/03 Javascript
JQuery Highcharts 动态生成图表的方法
2013/11/15 Javascript
JavaScript Promise启示录
2014/08/12 Javascript
JavaScript使用indexOf获得子字符串在字符串中位置的方法
2015/04/06 Javascript
JavaScript禁止复制与粘贴的实现代码
2016/05/16 Javascript
使用smartupload组件实现jsp+jdbc上传下载文件实例解析
2017/01/05 Javascript
js实现随机点名系统(实例讲解)
2017/10/18 Javascript
JavaScript设计模式之调停者模式实例详解
2018/02/03 Javascript
浅谈Vue网络请求之interceptors实际应用
2018/02/28 Javascript
详解微信小程序图片地扯转base64解决方案
2019/08/18 Javascript
IE11下CKEditor在Bootstrap Modal中下拉问题的解决
2019/09/25 Javascript
微信小程序 动态修改页面数据及参数传递过程详解
2019/09/27 Javascript
JavaScript中的this妙用实例分析
2020/05/09 Javascript
Nuxt默认模板、默认布局和自定义错误页面的实现
2020/05/11 Javascript
[43:03]完美世界DOTA2联赛PWL S2 PXG vs Magma 第二场 11.21
2020/11/24 DOTA
详细解读Python中的__init__()方法
2015/05/02 Python
深入解读Python解析XML的几种方式
2016/02/16 Python
python3实现ftp服务功能(客户端)
2017/03/24 Python
Python3简单实例计算同花的概率代码
2017/12/06 Python
pycharm+django创建一个搜索网页实例代码
2018/01/24 Python
解决paramiko执行命令超时的问题
2020/04/16 Python
django 将自带的数据库sqlite3改成mysql实例
2020/07/09 Python
使用Python将xmind脑图转成excel用例的实现代码(一)
2020/10/12 Python
python Gabor滤波器讲解
2020/10/26 Python
详解Open Folder as PyCharm Project怎么添加的方法
2020/12/29 Python
HTML5在canvas中绘制复杂形状附效果截图
2014/06/23 HTML / CSS
沃尔玛加拿大:Walmart.ca
2020/03/02 全球购物
nohup的用法
2012/11/26 面试题