【问题标题】:Progress of a grunt task in a web applicationWeb 应用程序中的 grunt 任务的进度
【发布时间】:2015-11-26 00:33:07
【问题描述】:

我用 grunt 构建了一个应用程序,我目前正在制作一个使用这个应用程序的 Web 界面(带有节点和角度)。 我在 NodeJS 中创建了一个使用 childProcess 执行 grunt 任务的按钮:

child_process.exec(my-command-grunt[, options], callback)

它可以正常工作,但该任务需要很长时间(约 10 秒)。出于这个原因,我当时展示了一个加载器,但我宁愿有一个进度条。如果有一种方法可以在运行时了解 grunt 任务的进度,这将帮助我用网页上的动态进度条替换加载器。

非常感谢!

【问题讨论】:

  • 您的 grunt 进程如何记录其状态?
  • 我不确定我是否很好地理解了您的问题,但是我在控制台(我在其中启动了节点服务器)上获得了日志,与在控制台中执行 grunt 命令时相同(期待它不是渐进式的,我一次登录)

标签: javascript angularjs node.js gruntjs


【解决方案1】:

据我所知,不可能只收到当前正在运行的任务的百分比进度。

但有办法! child_process.exec 将返回 ChildProcess 实例。然后,您可以访问 stdout 和 stderr 流(通过 child.stdout 和 child.stderr)。这些流是事件发射器,您可以监听data 事件并使用一些正则表达式来解析此输出。正则表达式可以是 /Running "([^"]*)"/ 之类的东西,然后您可以匹配其结果并向客户端报告 grunt 的进度。

【讨论】:

  • 谢谢你!你知道我能不能做一些除了正则表达式之外的事情,比如在每个任务结束时发出带有 grunt 的事件?
  • 您可以使用正则表达式来匹配来自 grunt 的结果并在每次匹配时发出事件。但这只是一个想法。
  • 如何为此创建一个 npm 模块!
  • 是的,去吧 ;)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-29
相关资源
最近更新 更多