首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >包含多个生成任务的Grunt任务只运行第一个任务。

包含多个生成任务的Grunt任务只运行第一个任务。
EN

Stack Overflow用户
提问于 2016-06-02 13:27:53
回答 1查看 547关注 0票数 2

我设置了以下三个任务,它们使用grunt.util.spawn处理各种Git任务:

代码语言:javascript
运行
复制
grunt.registerTask('git-add', function() {
  grunt.util.spawn({
    cmd : 'git',
    args: ['add', '.'],
  });
});

grunt.registerTask('git-commit', function(message) {
  grunt.util.spawn({
    cmd : 'git',
    args: ['commit', '-m', message],
  });
});

grunt.registerTask('git-push', function(origin, branch) {
  grunt.util.spawn({
    cmd : 'git',
    args: ['push', origin, branch],
  });
});

运行其中的每一个独立的工作都是有侧重点的,所以通过运行:

代码语言:javascript
运行
复制
$ grunt git-add
$ grunt git-commit:"commit message"
$ grunt git-push:origin:"branch name"

我可以成功地提交和推送我的更改。那么,当将这三个任务组合成自己的任务时,为什么只运行第一个任务(git-add)?

代码语言:javascript
运行
复制
var target = grunt.option('target');

grunt.registerTask('push-feature', [
  'git-add',
  'git-commit:' + target,
  'git-push:origin:feature/' + target
]);

假设我的分支名为12345,我应该能够运行$ grunt push-feature --target=12345,运行所有这3个任务,但只运行第一个git任务。如果删除git-add任务,则下一个任务(git-commit)是唯一执行的任务。

我错过了什么,才能让这三个任务按顺序运行?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-06-02 14:22:25

这可能是异步故障造成的。

在声明任务时,尝试将任务标记为异步,并使用回调选项进行派生。下面是第一个任务的示例:

代码语言:javascript
运行
复制
grunt.registerTask('git-add', function () {

    var done = this.async(); // Set the task as async.

    grunt.util.spawn({
        cmd: 'git',
        args: ['add', '.']   // See comment below about this line
    }, done);                // Add done as the second argument here.
});

还请注意,您有一个额外的逗号,可能会干扰操作:

代码语言:javascript
运行
复制
args: ['add', '.'], // <- this comma should be dropped.
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37593273

复制
相关文章

相似问题

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