2017-11-27 10 views
3

Gulp 4로 마이그레이션 한 사용자가 알 수 있듯이 gulp.series - 시리즈의 작업이 완료 신호를 올바르게 보내지 않으면 실행을 계속하지 않습니다.Gulp 4 : "비동기 완료 신호를 잊었습니까?" 복잡한 빌드 스크립트의 오류

내 문제는 이러한 종류의 오류를 처리하는 방법입니다. 콘솔의 메시지 일뿐입니다. (비동기 완료 신호를 잊지 않았습니까?); gulp는 여전히 0의 오류 코드와 함께 종료됩니다. 즉, 더 복잡한 빌드 스크립트에서 gulp를 실행하면 그 스크립트에 모든 것이 제대로 작동하고 꿀꺽 꿀꺽함 작업이 분명하게 완료되지 않은 것처럼 보일 것입니다. 반대로 gulpUtil.plugin error으로 오류가 발생하면 0이 아닌 오류 코드가 표시됩니다.

내 질문은 : 어떻게 그런 외부 오류가 발생했는지 "외부에서"감지하겠습니까?

  • 이 경우 0이 아닌 굴림을 종료하는 방법이 있습니까? (구독 할 수있는 이벤트가 있습니까? 아니면 오류를 던지거나 설정할 수있는 구성이 있습니까?)
  • 생성해야 할 자산이 있는지 확인해야합니까? (이 솔루션은 매우 약합니다.)
  • 콘솔 메시지를 "감시"하고 "신호를 잊었습니까?"와 같은 특정 문자열을 찾아야합니까?
  • (예, 나는 꿀꺽 꿀꺽 마심으로 모든 것을 할 수 있고 오류 코드를 확인할 필요가 없다는 것을 알고 있지만 실제로는 그렇게 할 수 없다고 가정합시다.)

내가 생각하지 못했던 다른 가능성이 있습니까?

답변

0

스트림/Promise/callback을 사용하여 프로세스에 신호를 보낼 수 있습니다. 손 흔들기가 완료되면 프로세스를 진행할 수 있습니다.

var print = require('gulp-print'); 

gulp.task('message', function() { 
    return gulp.src('package.json') 
    .pipe(print(function() { return 'HTTP Server Started'; })); 
}); 

gulp.task('message', function() { 
    return new Promise(function(resolve, reject) { 
    console.log("HTTP Server Started"); 
    resolve(); 
    }); 
}); 

gulp.task('message', function(done) { 
    console.log("HTTP Server Started"); 
    done(); 
}); 

기타는이 방식으로 콜백을 사용합니다.

function syncTasks(callback1) 
{ 
    return gulp.series(firstTask, secondTask, (callback2) => 
    { 
     callback1(); 
     callback2(); 
    })();  
} 
+0

자세한 답변을 보내 주셔서 감사합니다. 그러나 이것은 실제로 내 질문에 대답하지 않습니다 :) 나는 비동기 완료가 멍청한 녀석 4에서 어떻게 작동하고 작업 *이 어떻게 행동해야하는지 안다. 내가해야 할 일은 잘못한 일 때문에 프로세스가 중단 된 경우 꿀꺽 거리는 것을 감지하는 방법입니다. 작업에서 오류가 발생하면 gulp가 0이 아닌 오류 코드로 종료됩니다. 처리가 쉽습니다! 그러나 비동기 완료 오류로 인해 꿀꺽 꿀꺽 마는 소리가 0으로 끝나기 때문에 검색 및 처리가 어려워집니다. 분명히이 오류는 가능한 경우 가장 좋은 방법입니다 - 언급 한 방법을 사용하면 문제가 발생할 수 있지만 문제를 해결할 수 있습니다. –