zoukankan      html  css  js  c++  java
  • 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

    博客已搬迁新址:ovaldi.github.io
  • 相关阅读:
    【转载】行走在镜面的边缘
    Marked
    初赛知识
    【连载中】另一个宇宙
    【OI学习注意事项】
    欢迎
    [很杂的杂项] Yes, Prime Minister长难句大赏(持续更新中)
    [题解] HH的项链
    [题解] SP2713&P1415 线段树区间每个数开方+区间和
    [题解]EER1迫害
  • 原文地址:https://www.cnblogs.com/Raoh/p/4169426.html
Copyright © 2011-2022 走看看