全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

如何编写javascript的gulp插件

很久以前,我们在"细说gulp"随笔中,以压缩JavaScript为例,详细地讲解了如何利用gulp来完成前端自动化。

再来短暂回顾下,当时除了借助gulp之外,我们还利用了第三方gulp插件”gulp-uglify”,来达到压缩JavaScript文件的目的。

代码如下:

今儿,我们的重点就是,自己也来实现一个gulp插件。

正文

其实,如果只是单纯地想要编写一个gulp插件不难,可以借助through2或者through-gulp来编写(through-gulp是基于through2开发的)。

例如,我们想要接下来即将编写的插件(暂取名为modify),实现这样的功能:将指定html文件中的{{…}},全部替换成'Monkey 2 Dorie'。

如下:

下面我们将利用through2以及through-gulp一一道来。

**through2**

'use strict'
var through2 = require('through2');
module.exports = modify;
function modify(){
 return through2.obj(function(file, encoding, cb){
 //如果文件为空,不做任何操作,转入下一个操作,即下一个pipe
 if(file.isNull()){
 console.log('isNull');
 this.push(file);
 return cb();
 }
 //插件不支持对stream直接操作,抛出异常
 if(file.isStream()){
 console.log('isStream');
 this.emit('error');
 return cb();
 }
 //内容转换,处理好后,再转成Buffer形式
 var content = versionFun(file.contents.toString());
 file.contents = new Buffer(content);
 //下面这两句基本是标配,可参考through2的API
 this.push(file);
 cb();
 });
}
function versionFun(data){
 return data.replace(/{{something}}/, ' Monkey 2 Dorie ');
}

**through-gulp**

'use strict'
var through = require('through-gulp');
module.exports = modify;
function modify(){
 var stream = through(function(file, encoding, callback){
 //如果文件为空,不做任何操作,转入下一个操作,即下一个pipe
 if(file.isNull()){
 console.log('file is null!');
 this.push(file);
 return callback(); 
 }
 //插件不支持对stream直接操作,抛出异常
 if(file.isStream()){
 console.log('file is stream!');
 this.emit('error');
 return callback(); 
 }
 //内容转换,处理好后,再转成Buffer形式
 var content = versionFun(file.contents.toString('utf-8'));
 file.contents = new Buffer(content, 'utf-8');
 this.push(file);
 callback();
 }, function(callback){
 console.log('处理完毕!');
 callback();
 });
 return stream;
}
function versionFun(data){
 return data.replace(/{{something}}/, ' Monkey 2 Dorie ');
}

详情代码见github.

拓展阅读

[1]、through-gulp

[2]、gulp规范

[3]、gulp高级技巧

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持!


# gulp插件  # 详解前端构建工具gulpjs的使用介绍及技巧  # 在Mac OS上安装使用Node.js的项目自动化构建工具Gulp  # 基于gulp合并压缩Seajs模块的方式说明  # 基于Node.js的JavaScript项目构建工具gulp的使用教程  # JS中使用gulp实现压缩文件及浏览器热加载功能  # 不做  # 不支持  # 抛出  # 好后  # 转成  # 为空  # 再来  # 今儿  # 为例  # 两句  # 第三方  # 来完成  # 也来  # 很久以前  # 标配  # 道来  # 替换成  # 是基于  # Monkey  # Dorie 


相关文章: 中山网站推广排名,中山信息港登录入口?  如何用wdcp快速搭建高效网站?  建站之星云端配置指南:模板选择与SEO优化一键生成  家庭服务器如何搭建个人网站?  *服务器网站为何频现安全漏洞?  如何用AWS免费套餐快速搭建高效网站?  东莞市网站制作公司有哪些,东莞找工作用什么网站好?  公司门户网站制作公司有哪些,怎样使用wordpress制作一个企业网站?  如何正确选择百度移动适配建站域名?  学校免费自助建站系统:智能生成+拖拽设计+多端适配  如何在Golang中实现微服务服务拆分_Golang微服务拆分与接口管理方法  网站制作的步骤包括,正确网址格式怎么写?  如何制作公司的网站链接,公司想做一个网站,一般需要花多少钱?  如何快速生成专业多端适配建站电话?  如何通过wdcp面板快速创建网站?  建站之星如何修改网站生成路径?  ,巨量百应是干嘛的?  天河区网站制作公司,广州天河区如何办理身份证?需要什么资料有预约的网站吗?  Thinkphp 中 distinct 的用法解析  ,网页ppt怎么弄成自己的ppt?  建站DNS解析失败?如何正确配置域名服务器?  公司网站制作价格怎么算,公司办个官网需要多少钱?  网站制作公司哪里好做,成都网站制作公司哪家做得比较好,更正规?  如何在Golang中使用encoding/gob序列化对象_存储和传输数据  javascript中的try catch异常捕获机制用法分析  如何在阿里云虚拟服务器快速搭建网站?  清除minerd进程的简单方法  建站之星IIS配置教程:代码生成技巧与站点搭建指南  制作网站哪家好,cc、.co、.cm哪个域名更适合做网站?  如何登录建站主机?访问步骤全解析  Android自定义控件实现温度旋转按钮效果  移动端手机网站制作软件,掌上时代,移动端网站的谷歌SEO该如何做?  如何用y主机助手快速搭建网站?  建站主机选哪家性价比最高?  高防服务器租用如何选择配置与防御等级?  婚礼视频制作网站,学习*后期制作的网站有哪些?  建站之星后台管理系统如何操作?  在线流程图制作网站手机版,谁能推荐几个好的CG原画资源网站么?  免费制作海报的网站,哪位做平面的朋友告诉我用什么软件做海报比较好?ps还是cd还是ai这几个软件我都会些我是做网页的?  如何实现建站之星域名转发设置?  唐山网站制作公司有哪些,唐山找工作哪个网站最靠谱?  郑州企业网站制作公司,郑州招聘网站有哪些?  免费网站制作appp,免费制作app哪个平台好?  如何在景安服务器上快速搭建个人网站?  香港代理服务器配置指南:高匿IP选择、跨境加速与SEO优化技巧  专业公司网站制作公司,用什么语言做企业网站比较好?  建站与域名管理如何高效结合?  简单实现Android文件上传  网站网页制作电话怎么打,怎样安装和使用钉钉软件免费打电话?  如何快速使用云服务器搭建个人网站? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。