Gulp обратные вызовы для архивирования - PullRequest
0 голосов
/ 01 мая 2019

Я пытаюсь использовать gulp для архивирования моих сборочных артефактов для последующей передачи, но сейчас у меня возникла проблема, из-за которой задача gulp, похоже, не работает из-за обратных вызовов.

gulp.task("zip-build-folder", function() {
    git.revParse({args:'--abbrev-ref HEAD'}, function (err, branch) {
        console.log('current git branch: ' + branch);
        git.revParse({args:'--short HEAD'}, function (err, hash) {
            console.log('current git hash: '+hash);

            var dateString = new Date().toISOString().replace(/[-:]+/g, '_').replace(/[TZ]+/g,' ').replace(/\..+/, '');
            console.log(dateString);

            return gulp.src('build/**')
                .pipe(zip('artifact_'+branch+'_'+hash+'_'+dateString+'.zip'))
                .pipe(gulp.dest('artifacts'))
          });
    });
});

Есть ли способ исправить эту проблему в отношении gulp и callbacks?

Редактировать: я должен сказать, что zip генерируется очень хорошо, когда я запускаю npm run create-build-package, он завершается с «Следующие задачи не были выполнены: zip-build-folder.»

1 Ответ

0 голосов
/ 01 мая 2019

Я обнаружил, что есть аргумент "done", который изменяет способ, которым gulp обрабатывает завершение, чтобы дождаться вызова самой функции.Тогда новый код выглядит так:

gulp.task("zip-build-folder", function(done) { //changed

    var dateString = new Date().toISOString()
        .replace(/[-:]+/g, '_')
        .replace(/[TZ]+/g,' ')
        .replace(/\..+/, '');
    console.log(dateString);

    git.revParse({args:'--abbrev-ref HEAD'}, function (err, branch) {
        console.log('current git branch: ' + branch);
        git.revParse({args:'--short HEAD'}, function (err, hash) {
            //if (err) ...
            console.log('current git hash: '+hash);


            gulp.src('build/**')
                .pipe(zip('artifact_'+branch+'_'+hash+'_'+dateString+'.zip'))
                .pipe(gulp.dest('artifacts'));

            done(); //changed
          });
    });
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...