nodejs 自定义插件package开发与发布(可直接在全局命令行下运行)

#创建一个可全局运行的nodejs插件package并发布到npm

目标

创建新项目时,我只需要输入一条命令,就能生成规范、可读的目录结构

原理

在package当中内置一份example demo,根据命令行传过来的选项,输出对应的包含目录结构的demo到当前路径

步骤

1.首先构建规范的目录结构(cmd下用tree /f命令就能打印出来)

drunk-generator
	│  package.json
	│  README.md
	│          
	├─bin
	│      drunk-generator.js
	│      
	├─example
	│  ├─app
	│  │  │  index.html
	│  │  │  
	│  │  ├─src
	│  │  │  │  app.js
	│  │  │  │  
	│  │  │  ├─common
	│  │  │  │      ajax.js
	│  │  │  │      config.js
	│  │  │  │      
	│  │  │  └─module
	│  │  │          homepage.js
	│  │  │          subpage.js
	│  │  │          
	│  │  └─tpl
	│  │      ├─module
	│  │      │      home-page.html
	│  │      │      sub-page.html
	│  │      │      
	│  │      └─widget
	│  │              header.html
	│  │              
	│  └─simple
	│      │  index.html
	│      │  
	│      ├─src
	│      │  │  app.js
	│      │  │  
	│      │  ├─common
	│      │  │      ajax.js
	│      │  │      config.js
	│      │  │      
	│      │  └─module
	│      │          homepage.js
	│      │          
	│      └─tpl
	│          └─widget
	│                  header.html
	│                  
	└─lib
	  	index.js       

可以看出来,我定义了一个插件,名字是根目录drunk-generator,第一级子目录包含bin、lib、package.json、README.md,我还自定义了一个example目录,用于存放我的标准demo,目录结构正是我需要的结构

注: package.json的说明可以参考传送门

2.bin目录下的drunk-generator.js就是可执行文件的入口

#!/usr/bin/env node

var lib= require('../lib/index.js');

var myArgs = process.argv.slice(2);

lib.createModule(myArgs);

3.入口里面调用了真正的处理函数就是createModule,并把命令行参数传了进去,处理函数在lib/index.js当中

var gulp = require('gulp');
var debug = require('gulp-debug');
var path = require('path');

module.exports = {
    //创建
    createModule: function () {
        var type = arguments[0];//对应命令行第一个参数

		//默认对应simple。
        var source =__dirname+'/../example/simple/**/*.*';
        var targetPath = process.cwd();
		//对应app。
        if (type == 'app') {
            source = __dirname+'/../example/app/**'
        };
        source =  path.normalize(source);

        console.log('[gulp-generater]ready to copy to ',targetPath,'type is',type);

        gulp.src([source])
            .pipe(debug({title:'debug:',minimal:false}))
            .pipe(gulp.dest(targetPath));
    }
};

可以看到,其实逻辑非常简单,就是把drunk-generator里面对应example下面的模块拷贝到当前的目录里面(process.cwd())(还有其他方式复制移动文件,就不详述了)

注: 依赖gulp、gulp-debug 喔~未安装的话需要npm install 一下

##安装&发布

两条命令

  1. cd drunk-generator
  2. npm init
  3. npm publish(若本地没有user信息需要提前添加)

好了发布上去了,上npmjs.com一搜果然有阿,那个鸡冻呀,第一个插件这么顺利

##使用 npm install drunk-generator -g mkdir myModule && cd myModule drunk-generator app

##效果 mymodule
│ index.html

├─src
│ │ app.js
│ │
│ ├─common
│ │ ajax.js
│ │ config.js
│ │
│ └─module
│ homepage.js
│ subpage.js

└─tpl
├─module
│ home-page.html
│ sub-page.html

└─widget
header.html 就是我相应的效果,一条命令生成规范目录结构,再也不用拷一堆东西结果各种报错了,只需关注业务开发就行了,而且同事一看就知道该维护或修改哪些地方。规范就是能提高效率阿

附:源码git传送门

##参考 https://quickleft.com/blog/creating-and-publishing-a-node-js-module/

转载于:https://my.oschina.net/fuye/blog/422466

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值