gulp pipe缓存_gulp使用教程

gulp pipe缓存_gulp使用教程首先,gulp的源码里没有任何一部分是定义pipe的。gulp的pipe方法是来自nodejsstreamAPI的。gulp本身是由一系列vinyl模块组织起来的。pipe方法到底是什么呢?pipe跟他字面意思一样只是一个管道例如我有一堆文件var s=gulp.src(["fileA","fileB","fileC"])src方法实际上是’vinyl-fs’模…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全家桶1年46,售后保障稳定

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

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

pipe方法到底是什么呢?

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

例如我有一堆文件

var s = gulp.src(["fileA","fileB","fileC"])

Jetbrains全家桶1年46,售后保障稳定

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出来


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对象

var File = require("gulp-utils").File
//或者
var File = require("vinyl")

var myf = new File()
myf.contents = new Buffer("haha")
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

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

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • pycharm安装第三方库失败_pycharm怎么安装python库

    pycharm安装第三方库失败_pycharm怎么安装python库pycharm安装第三方库首先启动pycharm随后通过快捷键进入setting界面,快捷键为ctrl+Als+S点击右上角的加号,添加第三方库在安装之前,首先点击ManageRepositories增加一些国内的镜像源,包括豆瓣http://pypi.douban.com/simple/阿里的,http://mirrors.aliyun.com/pypi/simple/https://pypi…

    2022年8月28日
    8
  • PyQt5高级界面控件之QTableWidget(四)

    PyQt5高级界面控件之QTableWidget(四)QTableWidget前言QTableWidget是Qt程序中常用的显示数据表格的控件,类似于c#中的DataGrid。QTableWidget是QTableView的子类,它使用标准的数据模型,并且其单元数据是通过QTableWidgetItem对象来实现的,使用QTableWidget时就需要QTableWidgetItem。用来表示表格中的一个单元格,整个表格就是用各个单元格构建起…

    2022年5月3日
    50
  • 邮箱接收验证码登录

    邮箱接收验证码登录开发工具与关键技术 VSNVC 作者 听民谣的老猫撰写时间 2019 7 2511 07 已经讲过通过账号密码来进行用户的登录 今天就来讲讲邮箱发送动态密码实现用户登录 再讲这个功能之前你得去邮箱获取一下授权码 首先登录自己的邮箱 找到设置 找到账户 下滑到这里将画红圈的点击开启 选择一种验证方式 获取授权码 然后记住

    2025年10月14日
    7
  • RabbitMQ流控-FLow Control

    RabbitMQ流控-FLow Control当Connection发布消息的速度太快,队列无法跟上(消费速度低于生产速度),RabbitMQ会降低Connection的速度,无需配置。流控的Connection可以在rabbitmqctl、管理UI和HTTPAPI响应中显示flow状态。这意味着连接每秒要经历多次阻塞和解除阻塞,以便将消息传入的速度保持在服务器其他部分(例如,将这些消息路由到的队列)能够处理的速度。一般来说,处于流…

    2022年5月27日
    89
  • 用户名为中文软件不能用_电脑用户名打不了中文

    用户名为中文软件不能用_电脑用户名打不了中文(软件必须要求路径和用户名都是英文,比如SystemVue和MATLAB)我安装matlab也是一路坎坷,一开始每次激活成功后就自动关闭,再次打开依旧提示激活,无论是在线激活还是本地选择license文件都不行(.lic文件是从Mathwork上登录后下载下来的)。讲道理是还有一年期限,不会过期的,但是试了好久启动不了。后来发现license文件放错了位置,应该放在安装目录下,如C:\Progr…

    2022年10月14日
    4
  • Linux 内核版本号命名规则[通俗易懂]

    Linux 内核版本号命名规则[通俗易懂]Linux内核版本有两种:稳定版和开发版,Linux内核版本号由3个数字组成:r.x.yr:目前发布的内核主版本。x:偶数表示稳定版本;奇数表示开发中版本。y:错误修补的次数。内核版本号每位都代表什么?以版本号为例:2.6.9-5.ELsmp,r:2,主版本号x:6,次版本号,表示稳定版本y:9,修订版本号,表示修改的次数头两个数字合在一齐可…

    2025年9月6日
    7

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号