专栏首页cnblogsnodejs 命令行、自定义

nodejs 命令行、自定义

一、必备插件

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

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Javascript的内存泄漏分析

         作为程序员(更高大尚的称谓:研软件研发)的我们,无论是用Javascript,还是.net, java语言,肯定都遇到过内存泄漏的问题。只不过他们都有...

    sam dragon
  • 记Javascript一道题的理解

    代码如下: function Foo(){ getName = function(){ console.log("1"); } return t...

    sam dragon
  • Css3新特性应用之视觉效果

    一、单侧阴影 box-shadow属性的应用,格式:h-shadow v-shadow blur spread color inset属性取值介绍 h-sah...

    sam dragon
  • 聊一道口头面试题

    鉴于今天文章内容可能会比较正规一些,所以封面图就也跟着一起正规起来一下。封面人物:Dennis MacAlistair Ritchie,即丹尼斯里奇,或称D.M...

    老李秀
  • (43) 剖析TreeMap / 计算机程序的思维逻辑

    40节介绍了HashMap,我们提到,HashMap有一个重要局限,键值对之间没有特定的顺序,我们还提到,Map接口有另一个重要的实现类TreeMap,在Tre...

    swiftma
  • 免费/开源的PDF文件工具整理【压缩/合并/拆分】

    Adobe的PDF功能十分强大,但是也很贵,免费版只支持编辑一下或者签个名;网络上很多在线PDF文件编辑工具的网站,但是出于隐私考虑也信不过。最隐私可靠的无非是...

    ascii0x03
  • 1:基本概念

    六月的雨
  • spring cloud(学习笔记)高可用注册中心(Eureka)的实现(一)

    最近在学习的时候,发现微服务架构中,假如只有一个注册中心,那这个注册中心挂了可怎么办,这样的系统,既不安全,稳定性也不好,网上和书上找了一会,发现这个sprin...

    Dawnzhang
  • QTableView 一列添加两个按钮

    在QTableView的一列里添加两个按钮,之前添加一个按钮的思路是一样的,只是计算了一下按钮的宽,放两个按钮而已。 本例源代码:QtTowButtons.ra...

    lpxxn
  • 01 使用 AVFoundation 构建相机

    本文是 iOS/Android 音视频开发专题 第十篇,该专题中项目代码将在 Github 进行托管,你可在微信公众号(GeekDev)后台回复 资料 获取项...

    100001509164

扫码关注云+社区

领取腾讯云代金券