博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
nodejs 自定义插件package开发与发布(可直接在全局命令行下运行)
阅读量:7076 次
发布时间:2019-06-28

本文共 2750 字,大约阅读时间需要 9 分钟。

  hot3.png

#创建一个可全局运行的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 nodevar 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信息需要提前添加)

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

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

附:源码

##参考

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

你可能感兴趣的文章
随机选择实现
查看>>
多播、组播、广播优缺点分析
查看>>
为什么要创建开放源码的PlayScala社区?
查看>>
push 和pop的区别
查看>>
iOS App 上架流程图文教程
查看>>
接口和实现分离的好处
查看>>
敏捷并不是一件好的事情
查看>>
js获取客户端本地ip
查看>>
JQuery事件之取消默认行为
查看>>
redis 学习笔记(未完)
查看>>
线程组
查看>>
dell c6220安装系统--166
查看>>
python 字典多种方法删除 keys
查看>>
VIM使用系列:位置跳转和块模式
查看>>
数组资源
查看>>
【乡巴佬】在Word中合理排列文本框与文本
查看>>
maven 子项目 deploy 到私服
查看>>
等待实习的offer中的想法
查看>>
在Apache配置https方式访问网站
查看>>
线程开发之多线程之间的通讯实现
查看>>