使用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初步体验篇
Nov 23 NodeJs
nodejs搭建本地http服务器教程
Mar 13 NodeJs
nodejs个人博客开发第三步 载入页面
Apr 12 NodeJs
nodejs 图解express+supervisor+ejs的用法(推荐)
Sep 08 NodeJs
Nodejs实现文件上传的示例代码
Sep 26 NodeJs
nodejs实现的连接MySQL数据库功能示例
Jan 25 NodeJs
nodejs实现解析xml字符串为对象的方法示例
Mar 14 NodeJs
webstorm中配置nodejs环境及npm的实例
May 15 NodeJs
nodejs 十六进制字符串型数据与btye型数据相互转换
Jul 30 NodeJs
NodeJS搭建HTTP服务器的实现步骤
Oct 12 NodeJs
NodeJS有难度的面试题(能答对几个)
Oct 09 NodeJs
nodejs如何在package.json中设置多条启动命令
Mar 16 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 无法加载mcrypt.dll的解决办法
2013/04/03 PHP
使用Apache的htaccess防止图片被盗链的解决方法
2013/04/27 PHP
php cli 小技巧
2013/06/03 PHP
Smarty foreach控制循环次数的实现详解
2013/07/03 PHP
php中curl、fsocket、file_get_content三个函数的使用比较
2014/05/09 PHP
php正则匹配文章中的远程图片地址并下载图片至本地
2015/09/29 PHP
php+mysql+jquery实现简易的检索自动补全提示功能
2017/04/15 PHP
Django中通过定时任务触发页面静态化的处理方式
2018/08/29 PHP
如何实现浏览器上的右键菜单
2006/07/10 Javascript
JavaScript DOM学习第四章 getElementByTagNames
2010/02/19 Javascript
jQuery 类twitter的文本字数限制带提示效果插件
2010/04/16 Javascript
js中字符替换函数String.replace()使用技巧
2011/08/14 Javascript
Moment.js 不容错过的超棒Javascript日期处理类库
2012/04/15 Javascript
ExtJS4中使用mixins实现多继承示例
2013/12/03 Javascript
js报$ is not a function 的问题的解决方法
2014/01/20 Javascript
javascript自动给文本url地址增加链接的方法分享
2014/01/20 Javascript
JSON+HTML实现国家省市联动选择效果
2014/05/18 Javascript
js实现表单检测及表单提示的方法
2015/08/14 Javascript
微信小程序 页面跳转传递值几种方法详解
2017/01/12 Javascript
javascript将json格式数组下载为excel表格的方法
2017/12/22 Javascript
vue-cli 3.0 版本与3.0以下版本在搭建项目时的区别详解
2018/12/11 Javascript
在Django的模型和公用函数中使用惰性翻译对象
2015/07/27 Python
详解python3实现的web端json通信协议
2016/12/29 Python
python通过socket实现多个连接并实现ssh功能详解
2017/11/08 Python
详解用python生成随机数的几种方法
2019/08/04 Python
python性能测试工具locust的使用
2020/12/28 Python
美国诺德斯特龙百货官网:Nordstrom
2016/08/23 全球购物
6号汽车旅馆预订:Motel 6
2018/02/11 全球购物
索引覆盖(Index Covering)查询含义
2012/02/18 面试题
绿色城市实施方案
2014/03/19 职场文书
学雷锋的心得体会
2014/09/04 职场文书
2014年技术工作总结范文
2014/11/20 职场文书
杜甫草堂导游词
2015/02/03 职场文书
火烧圆明园观后感
2015/06/03 职场文书
爱国主题班会教案
2015/08/14 职场文书
关于EntityWrapper的in用法
2022/03/22 Java/Android