使用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 相关文章推荐
PHPStorm 2020.1 调试 Nodejs的多种方法详解
Sep 17 NodeJs
nodejs入门详解(多篇文章结合)
Mar 07 NodeJs
windows系统下简单nodejs安装及环境配置
Jan 08 NodeJs
nodejs教程之异步I/O
Nov 21 NodeJs
Nodejs实现的一个静态服务器实例
Dec 06 NodeJs
NodeJS实现客户端js加密
Jan 09 NodeJs
NodeJS遍历文件生产文件列表功能示例
Jan 22 NodeJs
图片上传之FileAPI与NodeJs
Jan 24 NodeJs
nodejs搭建本地http服务器教程
Mar 13 NodeJs
nodejs入门教程一:概念与用法简介
Apr 24 NodeJs
详解NodeJS Https HSM双向认证实现
Mar 12 NodeJs
nodejs中内置模块fs,path常见的用法说明
Nov 07 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
德生1994机评
2021/03/02 无线电
php 正则匹配函数体
2009/08/25 PHP
thinkPHP查询方式小结
2016/01/09 PHP
PHP中in_array的隐式转换的解决方法
2018/03/06 PHP
laravel5.0在linux下解决.htaccess无效和去除index.php的问题
2019/10/16 PHP
jquery实现图片等比例缩放以及max-width在ie中不兼容解决
2013/03/21 Javascript
js实现的二级横向菜单条实例
2015/08/22 Javascript
基于javascript如何传递特殊字符
2015/11/30 Javascript
JavaScript代码判断点击第几个按钮
2015/12/13 Javascript
jQuery on()绑定动态元素出现的问题小结
2016/02/19 Javascript
老生常谈JavaScript 函数表达式
2016/09/01 Javascript
jQuery中 $ 符号的冲突问题及解决方案
2016/11/04 Javascript
JS实现页面跳转参数不丢失的方法
2016/11/28 Javascript
textarea 在浏览器中固定大小和禁止拖动的实现方法
2016/12/03 Javascript
微信小程序 自定义Toast实例代码
2017/06/12 Javascript
慕课网题目之js实现抽奖系统功能
2017/09/19 Javascript
video.js 一个页面同时播放多个视频的实例代码
2018/11/27 Javascript
用原生JS实现爱奇艺首页导航栏代码实例
2019/09/19 Javascript
vue输入节流,避免实时请求接口的实例代码
2019/10/30 Javascript
OpenLayers3实现测量功能
2020/09/25 Javascript
Python操作json数据的一个简单例子
2014/04/17 Python
在Python的Flask框架下使用sqlalchemy库的简单教程
2015/04/09 Python
对pandas replace函数的使用方法小结
2018/05/18 Python
深入了解Django View(视图系统)
2019/07/23 Python
python实现飞机大战小游戏
2019/11/08 Python
Django 多对多字段的更新和插入数据实例
2020/03/31 Python
Python同时迭代多个序列的方法
2020/07/28 Python
html5手机端页面可以向右滑动导致样式受影响的问题
2018/06/20 HTML / CSS
西班牙太阳镜品牌:Hawkers
2018/03/11 全球购物
企业给企业的表扬信
2014/01/13 职场文书
《匆匆》教学反思
2014/02/22 职场文书
学生会主席竞聘书
2014/03/31 职场文书
预防艾滋病宣传标语
2014/06/25 职场文书
高三语文复习计划
2015/01/19 职场文书
小学四年级班主任工作经验交流材料
2015/11/02 职场文书
2016同学毕业寄语大全
2015/12/04 职场文书