gulp如何自定义插件

gulp是基于”流“的构建工具,上层流的输出就是下层流的输入,为了更好的支持链式操作,可以使用through2或者map-stream这两个库来对node stream做一层包装

这里,我们就使用through2来定义一个简单的gulp插件示例:doSomething.js

'use strict';
var through = require('through2'),
module.exports = function(opt) {

	function doSomething(file, encoding, callback) {

		if (file.isNull()) {
			return callback(null, file);
		}

		if (file.isStream()) {
			return callback(createError(file, 'Streaming not supported'));
		}
         //do something
               file.contents = new Buffer("this is my stream");//这里我们只是简单的改变了内容,实际上你可以你的自定义逻辑部分就在这里执行

		callback(null, file);
	}

	return through.obj(doSomething);
};

接下来,在调用的地方,就这么简单:

var doSomething = require('./doSomething.js');//假设模块存放路径在当前文件夹下
gulp.src("./app.js")
  .pipe(uglify())//调用其它插件
  .pipe(doSomething())//调用我们刚刚定义的插件
  .pipe(gulp.dest('./myStream.js'));//持久化到磁盘

PS:虽然自定义插件就这么简单,但实际上你需要了解Node Stream的API和gulp的工作原理,才能更深刻的理解整个过程中到底发生了些什么。

 

尊重他人原创,转载请务必注明来自http://www.cnblogs.com/Raoh/p/4169426.html

posted @ 2014-12-17 14:58  大悟飞天  阅读(1777)  评论(0编辑  收藏  举报