如何在 gulp 任务中运行 shell 命令并检测它何时完成?

2024-02-13

我正在尝试使用以下命令在 gulp 任务中运行 shell 命令child_process.spawn.

我必须检测任务何时完成运行,所以我正在使用stdout检查我在命令末尾发出的特定字符串,但由于某种原因,它看起来不像我的字符串正在发出:

// gulp 3.9.1
var gulp = require('gulp');
var spawn = require('child_process').spawn;

gulp.task('my-task', function(cb) {
  var command = ''; // construct my shell command here
  var end = 'end_of_command';
  var command = command + '; echo ' + end; // add special string to look for

  var cmd = spawn(command, { shell: true });

  cmd.stdout.on('data', function(data) {
    if (data.includes(end)) {
      return cb();
    }
  });
});

由于某种原因,我的 echo 语句没有发出,因此 if 语句没有被传递。

我哪里错了?

我还应该注意,当我直接在 shell 中运行此命令而不是通过 gulp 任务时,它运行良好并且预期输出可见。


Both Gulp https://github.com/gulpjs/gulp/blob/master/docs/API.md#async-support and child_process https://nodejs.org/api/child_process.html异步函数使用 Node 风格的错误优先回调。

spawn用于在命令执行期间处理流。如果需要的只是等待命令完成,exec and execFile去做:

var gulp = require('gulp');
var exec = require('child_process').exec;

gulp.task('my-task', function(cb) {
  exec('cmd', cb);
});

它可能更复杂spawn因为它还允许处理退出代码:

var gulp = require('gulp');
var spawn = require('child_process').spawn;

gulp.task('my-task', function(cb) {
  spawn('cmd', [], {})
  .on('error', cb)
  .on('close', code => code ? cb(new Error(code)) : cb());
});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 gulp 任务中运行 shell 命令并检测它何时完成? 的相关文章

  • 如何重定向到 instagram://user?username={username}

    我的 html 页面上有这个链接 可以在特定用户上打开 Instagram 应用程序 a href Link to Instagram Profile a 我一直在寻找自动运行 url instagram user username USE
  • 如何重置使用 JavaScript 更改的 CSS 属性?

    我的导航按钮的宽度从 100px 增加到 150px 当鼠标悬停在 nav li hover width 150px 但是使用 javascript 我已经做到了 无论选择哪个选项 宽度都将继续为 150px 当选择每个选项时 它会使其他选
  • jQuery AJAX 调用 Java 方法

    使用 jQuery AJAX 我们可以调用特定的 JAVA 方法 例如从 Action 类 该 Java 方法返回的数据将用于填充一些 HTML 代码 请告诉我是否可以使用 jQuery 轻松完成此操作 就像在 DWR 中一样 此外 对于
  • Google App Engine:修改云运行环境

    我正在尝试部署一个使用自定义 Node js 服务器的 Next js 应用程序 我想将自定义构建变量注入应用程序 next config js const NODE ENV process env NODE ENV const envTy
  • 如何抑制窗口鼠标滚轮滚动...?

    我正在开发嵌入页面中的画布应用程序 我有它 因此您可以使用鼠标滚轮放大绘图 但不幸的是 这会滚动页面 因为它是文章的一部分 当我在 dom 元素上滚动鼠标滚轮时 是否可以阻止鼠标滚轮在窗口上滚动 附加鼠标滚轮 不是 Gecko DOMMou
  • 如何监听 jQuery AJAX 请求?

    以下两种实现 ajaxRequest 1 2 的方法应该是等效的 话说回来 为什么验证回调已执行的单元测试 3 在 1 中成功而在 2 中失败 我应该如何重写测试 3 来监视 2 中的成功回调 如果我尝试stub jQuery ajax使用
  • Node.js:如何在检索数据(块)时关闭响应/请求

    我正在用 node js 构建一个应用程序 它加载多个页面并分析内容 因为 node js 发送块 所以我可以分析这些块 如果一个块包含例如索引 nofollow 我想关闭该连接并继续其余部分 var host example com to
  • 使用node.js安装xml2json时出错

    我尝试为 node js 安装 xml2json 包 但它给了我错误 Error are as below 我的系统配置如下 Node js 版本 v5 4 1 npm 版本 3 3 12 操作系统 Windows 10 64 位 pyth
  • 除了更改标题之外,如何在 Firefox 中强制另存为对话框?

    有没有办法在 ff 中强制打开 www example com example pdf 的另存为对话框 我无法更改标题 如果您可以将文件以 Base64 格式输出到客户端 则可以使用 data uri 进行下载 location href
  • 标签获取 href 值

    我有以下 html div class threeimages a img alt Australia src Images Services 20button tcm7 9688 gif a div class text h2 a hre
  • MVC 在布局代码之前执行视图代码并破坏我的脚本顺序

    我正在尝试将所有 javascript 包含内容移至页面底部 我正在将 MVC 与 Razor 一起使用 我编写了一个辅助方法来注册脚本 它按注册顺序保留脚本 并排除重复的内容 Html RegisterScript scripts som
  • 表单计算器脚本基本价格未加载 OnLoad

    我的表单中有一个计算器来计算我的下拉选项选择 function select calculate on change calc input type checkbox calculate on click calc function cal
  • Nodejs 在循环中等待

    我想循环等待 实现此目的的最佳方法是什么 这是我的实际代码 var groups 461 6726 3284 4 121 11 399 1735 17 19 1614 groups forEach function value myfunc
  • Babel 7 Jest Core JS“TypeError:wks不是函数”

    将我的项目升级到 Babel 7 后 通过 Jest 运行测试会抛出以下错误 测试在 Babel 6 中运行没有任何问题 但在 Babel 7 中失败并出现以下错误 TypeError wks is not a function at Ob
  • 如何在react-native中获取Text组件的onPress值

    我是一名新的 React Native 开发人员 我想使用 onPress 获取 Text 组件的值并将其传递给函数
  • 如何使输入字段和提交按钮变灰

    我想变灰这两件事 http doorsplit heroku com 歌曲输入字段和提交按钮 直到用户输入艺术家 有没有一种简单的方法可以通过 JQuery 来做到这一点 艺术家输入字段的id是 request artist 你可以这样做
  • Firefox 书签探索未超过 Javascript 的第一级

    我已经编写了一些代码来探索我的 Firefox 书签 但我只获得了第一级书签 即我没有获得文件夹中的链接 e g 搜索引擎 雅虎网站 谷歌网站 在此示例中 我只能访问 Search engines 和 google com 不能访问 yah
  • 如何获取给定 DOM 元素的所有定义的 CSS 选择器?

    如何使用 jQuery 获取给定 DOM 元素的所有定义的 CSS 选择器 定义后 我的意思是在应用于任何样式表的所有 CSS 选择器document 在某种程度上 这类似于 FireBug 实现的功能 其中显示所选 DOM 元素的所有应用
  • Safari 支持 JavaScript window.onerror 吗?

    我有一个附加到 window onerror 的函数 window onerror function errorMsg url line window alert asdf 这在 firefox chrome 和 IE 中工作正常 但在 s
  • 导致回发到与弹出窗口不同的页面

    我有一个主页和一个详细信息页面 详细信息页面是从主页调用的 JavaScript 弹出窗口 当单击详细信息页面上的 保存 按钮时 我希望主页 刷新 是否有一种方法可以调用主页的回发 同时还可以从详细信息页面维护保存回发 Edit 使用win

随机推荐

  • 使用sycl在Windows上构建tensorflow c ++时未定义monolithic

    我正在尝试为在 GPU 上运行的 Windows 构建 TensorFlow C 或 TensorFlow lite 不使用 CUDA 它应该可以在 AMD 上运行 我最好的猜测是使用 OpenCL 和 SYCL 我下载了 Codeplay
  • 在 Zend Framework 1 中记录错误的最佳方法是什么?

    我们在 Zend Framework v1 中构建了一个应用程序 并且在设置错误报告和日志记录方面没有做太多工作 有没有什么方法可以让我们在不对代码进行太多更改的情况下获得某种级别或错误报告 有可用的 ErrorHandler 插件吗 基本
  • 继承React组件的正确方法

    我知道我的问题有点偏颇 但我对 Javascript 很陌生并且prototypes 我读过它 但我真的不明白如何将该技术应用于我的实际问题 所以一个例子会非常有帮助 所以我有一个React组件 基本上看起来像这样 var Componen
  • 当 HTTP POST 重定向到 GET 时,POST 正文会发生什么?

    按照我之前的question https stackoverflow com questions 4939195 redirecting an http post 我需要将 HTTP POST 请求重定向到不同的服务器 我相信这可以使用 p
  • java.lang.IllegalArgumentException:缺少某些字段(可选或强制)

    我正在尝试使用 Apache Camel Bindy 创建固定文件阅读器 但出现异常 请帮助我找到解决方案 没有页眉和页脚 效果很好 Update 文件很小 现在无法理解 并且添加了 public 文件内容 101 08 2009 30A9
  • 当我在 Grails 上调用 Post 方法时,params 为空

    我正在为我的应用程序编写网络服务 我的问题是 当我使用 GET 方法调用它时 它可以工作 但是当我使用 POST 方法时 params 不包含我的参数 当我使用 GET 调用时 这是 params 的内容 params username a
  • 如何重置 jquery 动画以重新开始?

    我已经构建了一段不错的代码 一些动画和一些单击 悬停事件 其中只有一小行 我打算在多个 html 文档上使用它 这是一个游戏 你必须得到正确的答案并继续下一个问题 用全页滑块构建在另一个 html 中 我不想加载 DOM 多个次 毫无意义
  • Java流减少

    我有以下示例数据集 我想使用基于方向值的 Java 流 api 对其进行转换 减少 Direction int IN 1 2 OUT 3 4 OUT 5 6 7 IN 8 IN 9 IN 10 11 OUT 12 13 IN 14 to D
  • 改造@GET - 如何显示请求字符串?

    我正在开发一个 Android 应用程序 它使用 Retrofit 创建一个安静的客户端 为了调试网络调用 我想显示或转储实际被调用的 url 有没有办法做到这一点 我在下面添加了一些代码 显示了应用程序当前如何使用改造 客户端接口定义 i
  • 如何在不停止 JVM 的情况下将 Javaagent 添加到 JVM?

    我希望在不停止应用程序的情况下分析 Java 应用程序 我可以在应用程序运行时以某种方式添加 Javaagent 吗 See 程序启动后启动Java代理 https stackoverflow com questions 1277219 s
  • JSON.NET:从 JProperty 值获取 JObject

    我被困在某件事上 我使用 JObject Load 反序列化了一个 JSON 文件 get the JSON into an object JObject jsonObject JObject Load new JsonTextReader
  • 运行不带参数或任务名称的 CLI Thor 应用程序

    我正在寻找一种方法来创建一个命令行雷神应用程序 该应用程序将运行不带任何参数的默认方法 我摆弄了 Thor 的 default method 选项 但仍然要求我传递一个参数 我找到了一个类似案例 https stackoverflow co
  • 计算文本区域字符数

    我正在为我的文本区域开发字符计数website http ilanshomekitchen x10 mx new contact html 现在显示NaN 因为它似乎没有找到该字段中有多少个字符的长度 该字段一开始是0 所以数字应该是500
  • NHibernate (+ FluentNhibernate) : 连接两个独立的表

    我在创建具有共同属性的两个实体的联接时遇到问题 但它们没有映射在一起 假设您有一个实体 Article 其中包含属性 FamilyCode 和一个具有属性 Code 和 Label 的实体 Family 在我的映射中 Article 没有引
  • 如何“深度”克隆闭源第三方类的属性?

    The ICloneable http msdn microsoft com en us library system icloneable v vs 100 aspx NET框架的接口通常提供一种方法来支持cloning http en
  • 当特定部分出现在屏幕上时切换类[重复]

    这个问题在这里已经有答案了 我正在制作一个大滚动页 我的导航是固定位置的 当导航到达我页面上的特定部分时 我想更改导航上的颜色 从黑色到白色 反之亦然 因为有些是白色的 有些是黑色的 我想做一个对比 我已经在 css 中创建了一个应该切换的
  • Chef 客户和验证者

    我试图理解 Chef 客户端和验证器的概念 以及它们与引导过程的关系 根据本文 http docs opscode com server manage clients html 厨师 客户将使用 etc chef validation pe
  • 为什么 isNaN('') 或 isNaN("") 为 false(单引号或双引号被视为有效数字)?

    我需要一个内置函数来检查变量是否包含 Javascript 中的有效数字 如下这个链接 https stackoverflow com questions 175739 built in way in javascript to check
  • TabLayout重心不起作用

    我有一个 TabLayout 我希望选项卡显示在屏幕中央 下面是我的 TabLayout 的 XML
  • 如何在 gulp 任务中运行 shell 命令并检测它何时完成?

    我正在尝试使用以下命令在 gulp 任务中运行 shell 命令child process spawn 我必须检测任务何时完成运行 所以我正在使用stdout检查我在命令末尾发出的特定字符串 但由于某种原因 它看起来不像我的字符串正在发出