使用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 相关文章推荐
Nodejs sublime text 3安装与配置
Jun 19 NodeJs
NodeJS学习笔记之FS文件模块
Jan 13 NodeJs
NodeJS学习笔记之Connect中间件模块(一)
Jan 27 NodeJs
NodeJS Web应用监听sock文件实例
Feb 18 NodeJs
PHP和NodeJs开发的应用如何共用Session
Apr 16 NodeJs
nodejs初步体验篇
Nov 23 NodeJs
Nodejs从有门道无门菜鸟起飞必看教程
Jul 20 NodeJs
nodeJS(express4.x)+vue(vue-cli)构建前后端分离实例(带跨域)
Jul 05 NodeJs
Nodejs之http的表单提交
Jul 07 NodeJs
nodejs调取微信收货地址的方法
Dec 20 NodeJs
nodejs+express搭建多人聊天室步骤
Feb 12 NodeJs
nodejs实现一个word文档解析器思路详解
Aug 14 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
example1.php
2006/10/09 PHP
PHP动态图像的创建
2006/10/09 PHP
mysql5写入和读出乱码解决
2006/11/25 PHP
ajax php传递和接收变量实现思路及代码
2012/12/19 PHP
一张表搞清楚php is_null、empty、isset的区别
2015/07/07 PHP
CI框架封装的常用图像处理方法(缩略图,水印,旋转,上传等)
2016/11/22 PHP
js判断undefined变量类型使用typeof
2013/06/03 Javascript
js拖拽一些常见的思路方法整理
2014/03/19 Javascript
js获取客户端网卡的IP地址、MAC地址
2014/03/26 Javascript
JavaScript异步编程Promise模式的6个特性
2014/04/03 Javascript
jQuery响应enter键的实现思路
2014/04/18 Javascript
javascript中Math.random()使用详解
2015/04/15 Javascript
微信小程序 navigation API实例详解
2016/10/02 Javascript
vue.js通过自定义指令实现数据拉取更新的实现方法
2016/10/18 Javascript
bootstrap flask登录页面编写实例
2016/11/01 Javascript
JavaScript实现的CRC32函数示例
2016/11/23 Javascript
详解Node.js中的Async和Await函数
2018/02/22 Javascript
JavaScript闭包原理与用法实例分析
2018/08/10 Javascript
element-ui 中使用upload多文件上传只请求一次接口
2019/07/19 Javascript
Python字符遍历的艺术
2008/09/06 Python
在Django的模型和公用函数中使用惰性翻译对象
2015/07/27 Python
python 安装virtualenv和virtualenvwrapper的方法
2017/01/13 Python
python安装教程 Pycharm安装详细教程
2017/05/02 Python
python 中的divmod数字处理函数浅析
2017/10/17 Python
pyqt5 使用label控件实时显示时间的实例
2019/06/14 Python
Python调用.NET库的方法步骤
2019/12/27 Python
详解python metaclass(元类)
2020/08/13 Python
手摸手教你用canvas实现给图片添加平铺水印的实现
2019/08/20 HTML / CSS
德国著名廉价网上药店:Shop-Apotheke
2017/07/23 全球购物
Fanatics英国官网:美国体育电商
2018/11/06 全球购物
关联、聚合(Aggregation)以及组合(Composition)的区别
2012/02/29 面试题
优秀护士演讲稿
2014/04/30 职场文书
重大事项社会稳定风险评估方案
2014/06/15 职场文书
十佳青年事迹材料
2014/08/21 职场文书
本科毕业答辩开场白
2015/05/27 职场文书
签证工作证明模板
2015/06/15 职场文书