为什么有些 Gulp 流默认“流动”,而另一些则不流动?

2023-12-12

考虑这两个 gulp 任务:

gulp.task('src', function(done) {
  gulp.src('docs/*')
    .on('end', function() {
      console.log('ending');
      done();
    });
});

gulp.task('dest', function(done) {
  gulp.src('docs/*')
    .pipe(gulp.dest('temp'))
    .on('end', function() {
      console.log('ending');
      done();
    });
});

Running gulp dest行为如预期,输出:

[12:33:15] Using gulpfile ~/Projects/gulp-exit/gulpfile.js
[12:33:15] Starting 'dest'...
ending
[12:33:15] Finished 'dest' after 13 ms

然而,运行gulp src仅输出:

[12:31:11] Using gulpfile gulpfile.js
[12:31:11] Starting 'src'...

The 'end'回调永远不会被调用。经过一番调试后,我认为dest任务是flowing而源任务中的流则不是。

发出信号src通过调用显式地执行任务stream.resume():

gulp.task('src', function(done) {
  gulp.src('docs/*')
    .on('end', function() {
      console.log('ending');
      done();
    })
    .resume();
});

给出预期输出:

[12:46:52] Using gulpfile gulpfile.js
[12:46:52] Starting 'src'...
ending
[12:46:52] Finished 'src' after 11 ms

我在插件中看到过同样的行为组合:gulp.dest and 喝摩卡咖啡似乎又回到了流动的溪流吞咽记录器 and gulp-gh-页面 do not.

为什么行为上有差异?


之所以会出现这种情况,是因为有的流有数据要读取,有的则没有。

gulp.src('docs/*')返回一个可读流,其中包含每个文件的数据docs. The end仅当从流中读取了所有数据后,该事件才会触发可读流。

通常,您会将其通过管道传输到另一个自动执行此操作的流,但由于您不是,因此您需要使用:

gulp.task('src', function(done) {
  gulp.src('docs/*')
    .on('data', function() {})
    .on('end', function() {
      console.log('ending');
      done();
    });
});

或者,您可以使用finish事件,(我认为)等待所有数据被推入流中(即它完成工作):

gulp.task('src', function(done) {
  gulp.src('docs/*')
    .on('finish', function() {
      console.log('ending');
      done();
    });
});

你的第二个 gulp 任务使用gulp.dest('temp')它返回一个没有数据的流,所以end流处理完成后立即触发。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么有些 Gulp 流默认“流动”,而另一些则不流动? 的相关文章

  • 电子无声打印

    我目前正在构建一个电子应用程序 我的本地文件系统上有一个 PDF 我需要以静默方式打印出来 在默认打印机上 我遇到了节点打印机库 但它似乎对我不起作用 有没有一个简单的解决方案可以实现这一目标 首先 几乎不可能理解 无声 打印的含义 因为一
  • 如何将 Observables 数组与 RxJS 6.x 和 Node.js 合并?

    出于学习目的 我正在创建一个 Node 应用程序 该应用程序需要从数组中获取 x RxJS 可观察值并将其组合成单个事件流 我想知道事件何时以任何可观察的方式 以任何顺序发生 不是以任何顺序或完全完成 我觉得它应该在一个合并的事件流中 基本
  • 如何将 Angular Universal 应用程序部署到 Node.js 生产服务器?

    我有一个带有 Universal 的 Angular 8 应用程序 我想将其部署到共享 Web 主机生产服务器 我提前与网络主机核实过 他们告诉我可以在他们的共享网络托管上托管 Angular 通用网络应用程序 但是 无论我做什么 我都无法
  • websockets 如何处理同一浏览器的两个选项卡

    I have 1 个 PHP 服务器 提供 http 请求 和 1 node js 发布更新的数据消息 每个连接都带有 websocket php 服务器设置其 cookie 在一个浏览器中 此 cookie 可在所有选项卡中使用 当浏览器
  • Java 中序列化的目的是什么?

    我读过很多关于序列化的文章 以及它如何如此美好和伟大 但没有一个论点足够令人信服 我想知道是否有人能真正告诉我通过序列化一个类我们真正可以实现什么 让我们先定义序列化 然后我们才能讨论它为什么如此有用 序列化只是将现有对象转换为字节数组 该
  • 如何在Python 3中将文本流编码为字节流?

    将字节流解码为文本流很容易 import io f io TextIOWrapper io BytesIO b Test nTest n utf 8 f readline 在这个例子中 io BytesIO b Test nTest n 是
  • 当我们可以使用广播流时,为什么要使用 InheritedWidget | StreamBuilder 和静态变量 [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 当我们可以使用广播流时 为什么要使用 InheritedWidget StreamBuilder 和静态变量 当我们可以拥有一个简单干净的架构时
  • 如何在 App-Engine 上运行的基于 Express 的 Node JS 应用程序中获取远程客户端的 IP 地址

    尝试获取 IP 时 所有标准标头值都包含不正确的值 req ip ffff 172 17 0 5 req headers x forwarded for 169 254 160 2 req socket remoteAddress ffff
  • 如何使 fs.readFile 异步等待?

    我这里有这个 NodeJS 代码 它读取文件夹并处理文件 该代码有效 但它仍然是先打印所有文件名 然后只读取文件 如何获取一个文件 然后先读取该文件的内容 而不是先获取所有文件 async function readingDirectory
  • 有没有办法提高linux管道的性能?

    我正在尝试使用 64 位将超高速数据从一个应用程序传输到另一个应用程序CentOS http en wikipedia org wiki CentOS6 我使用以下方法进行了基准测试dd发现阻碍我的是管道而不是程序中的算法 我的目标是达到
  • 使用mockery和sinon模拟类方法

    我正在学习使用带有 sinon 的节点模块模拟进行单元测试 仅使用模拟和普通类 我就可以成功注入模拟 不过 我想注入一个 sinon 存根而不是一个普通的类 但我在这方面遇到了很多麻烦 我试图嘲笑的班级 function LdapAuth
  • 如何获取从 Express (Node.js) 中的表单传递的数据

    我想获取使用表单从页面传递的数据 并在重定向的页面中使用该数据 我的客户端有这个表格
  • 异步减少返回承诺

    我有一个对象数组 我必须为来自异步函数的每个对象添加一个属性 我正在执行 Array reduce 来迭代每个元素并仅返回一个结果 具有新属性的一个对象数组 我有这个 const res await resultOne reduce asy
  • 在 Node.js 中创建 JSON 数组

    我需要在用 Node js 编写的服务器中创建一个 JSON 字符串 以便在请求时发送到客户端 问题是这个 JSON 取决于服务器中的可用数据 因此 JSON 数组的大小并不总是相同 我已经尝试了一整天 但尽管我感觉很接近 但我仍然不明白
  • ER_ACCESS_DENIED_ERROR:用户 ''@'localhost' 的访问被拒绝(使用密码:NO)

    我有这个问题 我已经研究过但无法解决它 我想它与数据库权限有关 但我无法修复它 if error throw error Error ER ACCESS DENIED ERROR Access denied for user localho
  • 对自定义打字稿错误实例实施instanceof检查?

    打字稿有这个instanceof 检查自定义错误 https github com Microsoft TypeScript issues 13965问题 但尚不清楚我们需要做什么才能得到instanceof在职的 例如对于这个异常我们如何
  • Node.js:您什么时候知道异步任务集合何时完成?

    我想深入一个目录 并根据正则表达式检查我在其中看到的每个文件的名称 基本上是通用unix的一个版本find命令 仅用 Node js 编写 我不关心文件的顺序 但我确实想确保获得所有文件 我有以下代码 我认为 它接近我想要的 它需要一个 s
  • NodeJS 无法加载 css 文件

    所以我正在尝试制作一个 NodeJS 服务器 并且我尝试保留尽可能少的附加组件 但是 我遇到了一个问题 我似乎无法加载任何内容CSS我调用的文件HTML文件 该调用似乎确实由服务器处理 但它不会显示在浏览器中 My 网络服务器 js fil
  • 有没有办法在 TypeScript 2+ 中全局添加类型定义?

    我有一堆简单的 ts files 不是项目 即独立的 ts 脚本 他们使用一些 Node js 功能 TypeScript 和节点类型定义通过安装 npm install g typescript npm install g types n
  • 如何在浏览器同步中配置端口

    我有一个gulp任务运行于browser sync 默认情况下它运行在node js服务器的端口3000上 我想将默认端口更改为任何其他端口 例如3010 var gulp require gulp connect require gulp

随机推荐

  • Azure 数据工厂:对于特定属性,每个 item() 值不存在

    我的每个活动都有一个存储过程 SP 其中我显然使用 item 输入值 现在假设 SP 的输入值为 item a item b 和 item c 问题 对于 foreach 的某些迭代 item b 不存在 这是预期的 那么我应该如何在存储过
  • AngularJS [$injector:unpr] 未知提供者:dataProvider <- data <- PageCtrl

    我看过其他答案 但到目前为止没有任何帮助我 我在文件中使用以下代码时收到此错误 angular module myApp page ngRoute config routeProvider function routeProvider ro
  • 发现元素可见后无法使用递归来定位元素

    我的问题 我正在尝试使用页面对象中的部分来单击 Nightwatch 下拉列表中的选项 我不确定这是否是部分声明的问题 或者我遗漏了一些与范围相关的内容 问题是它发现该元素可见 但是当它尝试单击时会抛出错误 无法使用递归找到它 我可以尝试使
  • R:Git + Shiny服务器自动化部署

    我有一个 Shiny 服务器安装 以及一个适用于我的 Shiny 应用程序的 Git 存储库 我开发了 Shiny 应用程序并将其推送到 Git 存储库 并且我希望 Shiny 服务器从 Git 存储库加载该应用程序的最新版本 我怎样才能做
  • IE Flexbox justify-内容中心溢出问题

    在 IE11 上查看以下演示时 存在内容显示右对齐并被推到屏幕之外的问题 Codepen 演示 以下是证明内容中心合理性的代码 search results display webkit box display webkit flex di
  • 尝试禁用浏览器的后退按钮

    我写了两个 HTML 文件 登录 html a href Home html Next Page a 首页 html a href Login html gt gt Prev Page a 我正在尝试禁用浏览器的后退按钮 如果我在 c
  • 绘图中的注释自动放置

    我有代码可以轻松地自动处理着色和绘制多个图 对我来说 我想让注释变得更容易 goal 如果注释 xy 与前一个注释冲突 请向上移动 直到与其他注释不发生冲突 如果有一个功能已经能够实现这一点 那将是一个梦想 但我找不到 否则 列出注释并在坐
  • 如何从流中准确读取一个字符?

    我有一个带有一些文本数据的流 可以是 ASCII UTF 8 Unicode 编码是已知的 我需要从流中准确读取一个字符 而不再前进流位置 StreamReader 是不合适的 因为它会积极地从流中预取数据 Ideas 如果您想一次一个字节
  • 正则表达式匹配确切的数字,如果它存在于字符串中则不匹配

    我的正则表达式 3 b Matches 103 134 256 3 我希望它只匹配唯一的 3 数字 3 将是一个动态数字 正则表达式必须匹配该确切数字 而不是其他数字 如果该数字存在于另一个数字 如 103 中 则它不能匹配 那么它不应该匹
  • 对 NHibernate 缓存搜索的影响,其结果包括映射为公式的计算值(例如排名)

    当在 NHibernate 中使用公式定义计算属性时 当公式根据查询限制 尤其是查询缓存 改变其结果时 会产生什么影响 更具体地说 请考虑以下简单的 C 类 public class Entity public Entity public
  • 使用 Linux binutils 设置 ELF 映像基地址的优雅方法?

    对于个人项目 我需要编写一个在非默认内存地址加载的可执行文件 从这个问题 我知道我可以设置 ELF 的入口地址并手动修改节地址 以便可执行文件有效地基于我选择的某个地址 然而 答案表明 只有当我不进行 glibc 初始化 这个项目需要它 时
  • 无序线程问题

    我问过关于锁定的问题here人们回答说我的锁实现没有问题 但我发现了问题 这是相同的锁实现 我得到了奇怪的结果 我希望看到数字从 1 开始 但它是从 5 开始 示例如下 class Program static object locker
  • asp.net mvc 不断用 .wml 覆盖 text/html 内容类型

    我正在开发一个可以在移动 手机 设备上查看的网站 我只是使用纯 HTML 4 01 没有什么特别的 除了诺基亚 Series 40 第 1 5 版之外 这些页面在我们测试过的所有移动浏览器上都呈现良好 仔细观察 IIS 似乎会自动渲染内容类
  • BitBucket - 直接添加到开发分支而不是主分支

    我们正在将 SCM 更改为 BitBucket 目前我们使用 Clearcase SCM 我们在不同阶段 流中拥有代码 开发 UAT 和生产 其中开发具有开发人员当前正在处理的代码 UAT 已完成由 BP 测试的更改 而生产具有部署到生产的
  • 为文本区域内的线条着色

    有没有办法让textarea显示颜色的线条 我想要实现的是每隔一行都着色 即白色 灰色 白色 灰色 白色 灰色 以获得更好的可读性 用户应该写很多东西 比如 输入名称 每一个都从新行开始 无论如何 我确实使用 jQuery 所以如果他们为此
  • 带返回值的跨域弹窗

    这是设置 我在两个不同的域上有两个网站 www website1 com www someotherwebsite com 这就是我想做的 当用户开机时www website1 com然后单击一个链接 我想要一个弹出窗口显示www some
  • 使用 gdb 在多屏幕窗口中调试 MPI

    如果我有一个 MPI 程序 想要使用 gdb 进行调试 同时能够查看所有单独进程的输出 我可以使用 mpirun n
  • DbContext.OnConfiguring 没有被调用并且在 ASP.NET Core 中表现得很奇怪

    在我的 asp net core 项目中我有一个ReadingContext类派生自DbContext 根据文件OnConfiguring应该为每个实例调用DbContext即被创建 但就我而言 仅当我在调试时检查实例时才会调用它 我里面有
  • 如何在使用 AMD 时在 Backbone.js 中加载引导模型 (require.js)

    Backbone js 文档建议以这种方式加载引导模型 但这是一个不能使用的模式AMD 方法 使用 require js 唯一可能的解决方案是声明存储 JSON 数据的全局变量并稍后在相关初始化方法中使用该变量 有没有更好的方法这样做 没有
  • 为什么有些 Gulp 流默认“流动”,而另一些则不流动?

    考虑这两个 gulp 任务 gulp task src function done gulp src docs on end function console log ending done gulp task dest function