如何在 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 命令并检测它何时完成? 的相关文章

随机推荐

  • 使用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检查我在命令末尾发出的特定字符串 但由于某种原因 它看起来不像我的字符串正在发出