前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >gulp pipe缓存_gulp使用教程

gulp pipe缓存_gulp使用教程

作者头像
全栈程序员站长
发布2022-11-15 11:15:19
7800
发布2022-11-15 11:15:19
举报
文章被收录于专栏:全栈程序员必看

首先,gulp的源码里没有任何一部分是定义pipe的。

gulp的pipe方法是来自nodejs stream API的。 gulp本身是由一系列vinyl模块组织起来的。

pipe方法到底是什么呢?

pipe跟他字面意思一样只是一个管道

例如我有一堆文件

代码语言:javascript
复制
var s = gulp.src(["fileA","fileB","fileC"])

src方法实际上是'vinyl-fs'模块的方法,选择一系列文件并创建可读流(readableStream)。

返回的是由从这些文件而来的流(stream)

既然是Stream,自然少不了最常用的pipe的方法。 s.pipe(fn)

pipe方法传入方法的是一个function,这个function作用无非是接受上一个流(stream)的结果,并返回一个处理后流的结果(返回值应该是一个stream对象)。 注意的是这个函数只是一个包装,并不是会直接操作文件的。

这里面的思想跟可以阅读参考资料 http://www.zhangxinxu.com/wordpress/2013/02/js-currying/ http://www.cnblogs.com/kunhu/p/3608109.html

例如这样构造一个Stream对象并且返回,然后再stream的方法里把把文件内容log出来

代码语言:javascript
复制
var stream = require('stream'); s.pipe(()=>{ var fileStream = new stream.Transform({objectMode: true}); fileStream._transform = function(file, unused, callback){ console.log(file.contents);//把传入的文件内容log出来 this.push(file);//注意的是这个file是也必须是vinyl对象 callback(); }; return fileStream; })

管道与Stream

也就是说pipe本身只是定义了管道的组织情况,管道本身的具体结构(Stream对象) ,是需要开发者自己去设计的。 pipe方法只负责返回这个管道结构(Stream对象) 楼主想要窥探管道里的内容,就要创建一个Stream对象,在Stream对象接收结果的方法里把流里的内容log出来即可

Stream与File

注意的是gulp里的流的file必须是vinyl对象

代码语言:javascript
复制
var File = require("gulp-utils").File
//或者
var File = require("vinyl")

var myf = new File()
myf.contents = new Buffer("haha")

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/234984.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年11月1日 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • pipe方法到底是什么呢?
  • 管道与Stream
  • Stream与File
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档