全网整合营销服务商

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

免费咨询热线: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 


相关文章: ,柠檬视频怎样兑换vip?  c++ stringstream用法详解_c++字符串与数字转换利器  动图在线制作网站有哪些,滑动动图图集怎么做?  哈尔滨网站建设策划,哈尔滨电工证查询网站?  网站制作模板下载什么软件,ppt模板免费下载网站?  常州自助建站工具推荐:低成本搭建与模板选择技巧  免费制作海报的网站,哪位做平面的朋友告诉我用什么软件做海报比较好?ps还是cd还是ai这几个软件我都会些我是做网页的?  网站视频怎么制作,哪个网站可以免费收看好莱坞经典大片?  C#如何使用XPathNavigator高效查询XML  如何用腾讯建站主机快速创建免费网站?  建站之星导航菜单设置与功能模块配置全攻略  网站制作说明怎么写,简述网页设计的流程并说明原因?  建站之星会员如何解锁更多建站功能?  教学网站制作软件,学习*后期制作的网站有哪些?  如何用AWS免费套餐快速搭建高效网站?  建站主机类型有哪些?如何正确选型  建站之星收费标准详解:套餐费用及年费价格表一览  关于BootStrap modal 在IOS9中不能弹出的解决方法(IOS 9 bootstrap modal ios 9 noticework)  如何在Mac上搭建Golang开发环境_使用Homebrew安装和管理Go版本  如何通过FTP空间快速搭建安全高效网站?  PHP正则匹配日期和时间(时间戳转换)的实例代码  家族网站制作贴纸教程视频,用豆子做粘帖画怎么制作?  潮流网站制作头像软件下载,适合母子的网名有哪些?  专业网站制作企业网站,如何制作一个企业网站,建设网站的基本步骤有哪些?  惠州网站建设制作推广,惠州市华视达文化传媒有限公司怎么样?  网站微信制作软件,如何制作微信链接?  中山网站制作网页,中山新生登记系统登记流程?  如何在阿里云ECS服务器部署织梦CMS网站?  潍坊网站制作公司有哪些,潍坊哪家招聘网站好?  如何设计高效校园网站?  建站之星展会模版如何一键下载生成?  网站网页制作专业公司,怎样制作自己的网页?  c# Task.ConfigureAwait(true) 在什么场景下是必须的  制作网站公司那家好,网络公司是做什么的?  建站VPS推荐:2025年高性能服务器配置指南  如何高效搭建专业期货交易平台网站?  如何配置FTP站点权限与安全设置?  网站制作企业,网站的banner和导航栏是指什么?  如何在云主机上快速搭建网站?  网站制作服务平台,有什么网站可以发布本地服务信息?  如何零基础开发自助建站系统?完整教程解析  ,在苏州找工作,上哪个网站比较好?  英语简历制作免费网站推荐,如何将简历翻译成英文?  如何彻底删除建站之星生成的Banner?  如何挑选高效建站主机与优质域名?  济南网站建设制作公司,室内设计网站一般都有哪些功能?  车管所网站制作流程,交警当场开简易程序处罚决定书,在交警网站查询不到怎么办?  上海网站制作网站建设公司,建筑电工证网上查询系统入口?  深圳 网站制作,深圳招聘网站哪个比较好一点啊?  如何设置并定期更换建站之星安全管理员密码? 

您的项目需求

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