首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >等待之前的吞咽任务完成

等待之前的吞咽任务完成
EN

Stack Overflow用户
提问于 2015-08-15 23:01:06
回答 1查看 1.1K关注 0票数 0

我试着用gulp和gulp git自动化我的部署过程,但我遇到了一个问题,我推入git,然后尝试清理构建文件,但它在推送完成之前就运行了。有没有办法强制gulp等到前一条命令执行完毕?或者直到满足了其他条件?或者我只是以错误的方式来处理这个问题?

下面是我的吞咽脚本:

代码语言:javascript
复制
var gulp = require('gulp');
var git = require('gulp-git');
var minifyCss = require('gulp-minify-css');
var uglify = require('gulp-uglify');
var runSequence = require('run-sequence');

//Main Deploy Task
gulp.task('deploy', function(){
    runSequence(
        'deploy-branch',
        'minify-css',
        'minify-js',
        'commit-all',
        'git-push',
        'clear-static',
        'master-branch',
        'remove-deploying'
        );
});

//Creates a branch called deploying
gulp.task('deploy-branch',function(){
    git.checkout('deploying', {args:'-b'}, function(err){
        if (err) throw err;
    });
});

//Minifies css
gulp.task('minify-css',function(){
    return gulp.src('static/**/**/*.css')
        .pipe(minifyCss({compatibility: 'ie8'}))
        .pipe(gulp.dest('static')); //Return in place
});

//Minifies js
gulp.task('minify-js',function(){
    return gulp.src('static/**/**/*.js')
        .pipe(uglify({mangle: false}))
        .pipe(gulp.dest('static'));
});

//Commit
gulp.task('commit-all', function(){
    return gulp.src('./static/*')
        .pipe(git.commit('deploying commit'));
});

//Pushes to the remote repo
gulp.task('git-push',function(){
    git.push('production', 'deploying', function(err){
        if (err) throw err;
    });
});

//Clear Minified Files
gulp.task('clear-static',function(){
    gulp.src('static/*')
        .pipe(git.checkoutFiles());
});

//Returns to master branch
gulp.task('master-branch',function(){
    git.checkout('master', function(err){
        if (err) throw err;
    });
});

//Deletes Deploying Branch
gulp.task('remove-deploying',function(){
    //Delete deploying branch
    git.branch('deploying', {args:'-D'}, function(err){
        if (err) throw err;
    });
});
EN

回答 1

Stack Overflow用户

发布于 2015-08-16 14:55:07

尝试修改git-push任务,如下所示:

代码语言:javascript
复制
gulp.task('git-push',function(done){
    git.push('production', 'deploying', function(err){
        if (err) throw err;
    }, done);
});

因为返回管道的普通机制不适用于git.push,所以可以通过这种方式直接传递下一个应该执行的函数。因此,它应该让下一个任务等待到git.push完成,因为git.push是调用下一个任务的那个任务。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32025955

复制
相关文章

相似问题

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