首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何与Grunt一起异步运行2同步任务?

如何与Grunt一起异步运行2同步任务?
EN

Stack Overflow用户
提问于 2016-04-02 16:34:59
回答 1查看 60关注 0票数 0

我有两个Grunt任务:A和B。A的执行时间是5秒。执行时间B为10秒。

我在预提交脚本中运行这两个任务。这两个任务都是同步的,所以预提交脚本的执行时间是15。我想以某种方式将这两个任务组合在一起,并异步运行它们。因此,执行预提交只需10秒。

有可能吗?

这地狱是行不通的

代码语言:javascript
运行
复制
grunt.registerTask('pre-commit', 'Run sonar and jscs async', function() {
  var done = this.async(),
    _counter = 0,
    asyncTasksCounter = 2,
    asyncHelper = function (foo) {
      setTimeout(function () {
        foo();
        _counter++;
        if (_counter === asyncTasksCounter) {
          done();
        }
      }, 16.66)
    };
  asyncHelper(function () {
    grunt.task.run('A');
  });
  asyncHelper(function () {
    grunt.task.run('B');
  });
});
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-04-02 16:48:39

我不会用Grunt来做这个的。假设您使用的是npm,我将分别定义这些任务,然后使用npm来运行它们,比如使用shell-executor (Windows和Mac)。

安装后,将任务添加到脚本部分 of package.json,然后使用npm run [scriptname]运行脚本,如npm run prepublish

代码语言:javascript
运行
复制
scripts: {
  "precommit": "shell-exec \"grunt sonar\" \"grunt jscs\"",
}

有一个类似的脚本concurrently,它可以很好地处理并发任务。

之所以需要这些模块,是因为变化的OSes处理& (并行)和&& (并发)的方式不同,否则您可以:

代码语言:javascript
运行
复制
"precommit": "grunt sonar & grunt jscs",
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36375885

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档