使用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、Python写的一个简易HTTP静态文件服务器
Jul 18 NodeJs
基于NodeJS的前后端分离的思考与实践(五)多终端适配
Sep 26 NodeJs
NodeJS使用jQuery选择器操作DOM
Feb 13 NodeJs
iPhone手机上搭建nodejs服务器步骤方法
Jul 06 NodeJs
使用Angular和Nodejs、socket.io搭建聊天室及多人聊天室
Aug 21 NodeJs
Nodejs进阶:基于express+multer的文件上传实例
Nov 21 NodeJs
nodejs获取微信小程序带参数二维码实现代码
Apr 12 NodeJs
Nodejs之http的表单提交
Jul 07 NodeJs
nodejs中art-template模板语法的引入及冲突解决方案
Nov 07 NodeJs
nodejs acl的用户权限管理详解
Mar 14 NodeJs
在NodeJs中使用node-schedule增加定时器任务的方法
Jun 08 NodeJs
windows如何把已安装的nodejs高版本降级为低版本(图文教程)
Dec 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
php实现可用于mysql,mssql,pg数据库操作类
2014/12/13 PHP
PHP可变函数学习小结
2015/11/29 PHP
深入解析PHP的Laravel框架中的event事件操作
2016/03/21 PHP
php及codeigniter使用session-cookie的方法(详解)
2017/04/06 PHP
解决Laravel自定义类引入和命名空间的问题
2019/10/15 PHP
javascript 一些用法小结
2009/09/11 Javascript
function foo的原型与prototype属性解惑
2010/11/19 Javascript
Script的加载方法小结
2011/01/12 Javascript
JS的replace方法详细介绍
2012/11/09 Javascript
THREE.JS入门教程(2)着色器-上
2013/01/24 Javascript
获取内联和链接中的样式(js代码)
2013/04/11 Javascript
js showModalDialog弹出窗口实例详解
2014/01/07 Javascript
使用AngularJS实现表单向导的方法
2015/06/19 Javascript
jQuery移动端图片上传组件
2016/06/12 Javascript
jQuery树形插件jquery.simpleTree.js用法分析
2016/09/05 Javascript
js中数组的常用方法小结
2016/12/30 Javascript
prototype与__proto__区别详细介绍
2017/01/09 Javascript
angular项目中bootstrap-datetimepicker时间插件的使用示例
2018/03/15 Javascript
在vue 中使用 less的教程详解
2018/09/26 Javascript
详解如何制作并发布一个vue的组件的npm包
2018/11/10 Javascript
纯 JS 实现放大缩小拖拽功能(完整代码)
2019/11/25 Javascript
[03:07]2015国际邀请赛选手档案EHOME.rOtK 是什么让他落泪?
2015/07/31 DOTA
python thread 并发且顺序运行示例
2009/04/09 Python
Python深入学习之内存管理
2014/08/31 Python
Python3 模块、包调用&路径详解
2017/10/25 Python
python在文本开头插入一行的实例
2018/05/02 Python
解决python3 urllib 链接中有中文的问题
2018/07/16 Python
python hbase读取数据发送kafka的方法
2018/12/27 Python
关于tf.TFRecordReader()函数的用法解析
2020/02/17 Python
python获取整个网页源码的方法
2020/08/03 Python
详解python模块pychartdir安装及导入问题
2020/10/22 Python
解释一下ruby中的特殊方法与特殊类
2013/02/26 面试题
感恩老师的演讲稿
2014/05/06 职场文书
党员干部作风建设思想汇报范文
2014/10/25 职场文书
我的兄弟姐妹观后感
2015/06/15 职场文书
mysql事务对效率的影响分析总结
2021/10/24 MySQL