一、必备插件

1. babel:es6语法支持,需要babel-perset-es2015(转换成es5执行)、babel、babel-core(程序执行)

2. commander:自定义命令插件,提供参数的传递等

3. liftoff:实现对命令窗口的输入监听,以及命令格式化规格。

4. minimist:读取命令行参数插件

以上插件都可以通过npm直接安装。

二、示例代码分析:

2.1. cli.js

var liftOff = require("liftoff");
import app from "./app";
var argv = require("minimist")(process.argv.slice(2));
var cli =new liftOff({
name: "sam",
processTitle: 'samLong',
moduleName: "sam",
extensions:{
'.js':null
}
});
cli.launch({
cwd: argv.r || argv.root,
configPath: argv.f || argv.file
},function(env){
console.log("命令名称:" + argv["_"]);
console.log( "执行路径:" + env.cwd);
var commander = require('commander');
var _app = new app();
_app.register(commander);
});

1. liftOff类:通过导入liftOff第三方插件实现对命令行参数进行解析,且通过liftOff的实例方法launch进行捕获

2. require("minimist")(process.argv.slice(2)):将命令行参数转换为对象

3. ./app:导入命令执行类

2.2. app.js

class App
{
register(commander)
{
commander
.option('-d --date', "显示时间")
.parse(process.argv);
if (commander.date) {
console.log('date命令被执行');
}
}
};
export default App;

通过commander实现的一个简单的命令执行类。

2.3. index.js

require("babel-core/register"); //导入babel-core,用于在代码中转换我es6
require("./src/app");
require('./src/cli');

2.4. 执行效果:

三、GIt地址

git@code.csdn.net:cqhaibin/commandertest.git

nodejs 命令行、自定义的更多相关文章

  1. beego小技巧两则:通过命令行自定义端口和环境,url中带有中划线处理

    1,通过命令行自定义端口和环境 先用flag提取参数,如果要环境,就反向注进去, 如果是端口,就打到beego.Run函数里去. 2,在作router里的url解析时,如果URL中含有-中划线,用严格 ...

  2. nodejs命令行执行时带参数

    nodejs命令行执行时带参数 转 https://www.jianshu.com/p/474e6d76f867   今天项目里突然想在初始化时跑一些数据,于是想起以前在python时可以在命令行里带 ...

  3. NodeJs命令行新建项目实例

    安装Nodejs: 下载地址:http://nodejs.org/download/ 设置环境变量,例如我将nodejs装在D:/program文件夹下,则设以下为系统环境变量 D:\Program\ ...

  4. 前端技术之:如何创建一个NodeJs命令行交互项目

    方法一:通过原生的NodeJs API,方法如下:   #!/usr/bin/env node # test.js var argv = process.argv; console.log(argv) ...

  5. nodejs 命令行获取入参

    安装:npm install yargs --save-dev Example index.js const argv = yargs.alias('n', 'name').alias('p', 'p ...

  6. 了不起的NodeJS命令行工具

    一个命令行工具实例 这个实例包含了处理进程中的stdin和stdout相关的api,以及文件系统有关的api,使用回调和事件机制来实现并发,主要锻炼基于非阻塞事件的I/O编程中的流控制. // 声明模 ...

  7. 使用PM2守护Nodejs命令行程序

    介绍 pm2是nodejs的一个带有负载均衡功能的应用进程管理器的模块,类似有Supervisor,forever,用来进行进程管理. 一.安装: <pre>npm install pm2 ...

  8. Devexpress 使用经验 —— ASPxGridView命令行自定义按钮灵活使用

    ASPX <dx:ASPxGridView ID="ASPxGridView1" runat="server" DataSourceID="Ob ...

  9. 一张地图,告诉你NodeJS命令行调试器语句

    NodeJS提供脚本调试. 进入node debug xx.js您可以进入调试模式. 版权声明:本文博客原创文章,博客,未经同意,不得转载.

随机推荐

  1. EF Power Tools参数不正确的解决方法

    在Visual Studio 2010安装了EF Power Tools Beta 3之后,希望根据本地现有数据库模型来生成基于Entity Framework Code First的代码时,经常出现 ...

  2. Vue.js学习笔记(6)tree

    分享一段用 <ul>和<li>标签实现tree的代码,可能写的不是很好,如果大家有更好的希望和小颖分享下.嘻嘻 啦啦啦,代码看这里喽: <div class=" ...

  3. javascript运动系列第二篇——变速运动

    × 目录 [1]准备工作 [2]加速运动 [3]重力运动[4]减速运动[5]缓冲运动[6]加减速运动[7]往复运动[8]变速函数 前面的话 前面介绍过匀速运动的实现及注意事项,本文在匀速运动的基础上, ...

  4. Android初级教程_获取Android控件的宽和高

    转载:http://blog.csdn.net/johnny901114/article/details/7839512 我们都知道在onCreate()里面获取控件的高度是0,这是为什么呢?我们来看 ...

  5. N个数依次入栈,出栈顺序有多少种?

    对于每一个数来说,必须进栈一次.出栈一次.我们把进栈设为状态‘1’,出栈设为状态‘0’.n个数的所有状态对应n个1和n个0组成的2n位二进制数.由于等待入栈的操作数按照1‥n的顺序排列.入栈的操作数b ...

  6. Ruby之入门(一)

    前言 这门语言很少去听过,可能是没怎么用到就不会听到太多关于ruby的消息,工作需要这门语言,需要从0开始学习这门语言,慢慢学习简直...太神奇了...,原谅我见识浅薄.原来很早就已经出世了,园子中也 ...

  7. Python深入06 Python的内存管理

    作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 语言的内存管理是语言设计的一个重要方面.它是决定语言性能的重要因素.无论是C语言的 ...

  8. android给View设置上下左右边框

    给View控件设置边框,可以动态设置上下左右.通过布局文件就能搞定 1.在drawable文件夹下新建一个shape_main_list_bg.xml文件 <layer-list xmlns:a ...

  9. Util应用程序框架公共操作类(四):验证公共操作类

    为了能够验证领域实体,需要一个验证公共操作类来提供支持.由于我将使用企业库(Enterprise Library)的验证组件来完成这项任务,所以本文也将演示对第三方框架的封装要点. .Net提供了一个 ...

  10. C++指针和动态内存分配

    指针和动态内存分配 数组与指针 数组 数组名是一个指针常量. 数组名传递数据时,传递的是地址. 数组作为函数参数时不指定第一维大小. 对象数组 A a[2] = {A(1,2)}; 执行时先调用有参数 ...