2016-08-03 7 views
0

gulp-watch을 사용하는 작업 후에 종속 작업을 트리거하는 방법을 알아 내려고 노력했습니다. 나는 여기서 뭔가 나쁜 짓을하고있는 것 같아. 그래서, 내가하고 싶은 것은 전체 프로젝트를 화면에 표시하고 (+ 변경 사항을 관찰하는 것입니다.) 작업이 완료되면이 프로젝트에 종속 된 번들링 태스크를 트리거하려고합니다. transpiling 작업에는 포함 된 작업이 포함되어 있으므로이를 종속 작업으로 지정할 수는 없지만 전체 transpiling 작업이 완료된 시점을 알 수있는 방법이 필요합니다. 초기 번들을 수행하고 번들을 다시 수행하려는 각 변경 사항을 확인해야합니다.멍청한 시계 후 종속 작업을 트리거하는 방법

어떻게 하시겠습니까? 콜백은 초기 transpilation 후 작업을 번들 트리거 난 후에 만 ​​사용할 수 있습니다 때마다 파일이 transpiled 된 watch을 기록 콘솔 것 시청에 전달

gulp.task('babel',() => { 
    return gulp.src(babelSrc) 
    .pipe(watch(babelSrc,() => console.log('watch')) 
    .pipe(babel({...})) 
    .pipe(gulp.dest('build')); 
}); 

:

이 같은 transpilation의 작업 모습입니다 전체 프로젝트가 완료되었습니다. 내가하고 싶은 것을

답변

0

은 전체 프로젝트 [...]를 transpile하는 것입니다 그리고 그 끝낼 후 나는 번들링 작업 당신이 지금하고있는 방법은 불가능

을 트리거합니다. .pipe()gulp-watch 플러그인을 사용하면 스트림에서 'end''finish' 이벤트가 발생하지 않습니다. 따라서 초기 babel 컴파일이 완료된 시점을 알 수있는 방법이 없습니다.

시계의 초기 편집을 분리해야합니다. 그런 식으로 'end' 이벤트를 수신하고 거기에서 종속 작업을 트리거 할 수 있습니다.

gulp.task('dependend-task',() => { 
    ... 
}); 

function babelStream(stream) { 
    return stream 
    .pipe(babel({...})) 
    .pipe(gulp.dest('build')) 
    .on('end',() => gulp.start('dependend-task')); 
} 

gulp.task('babel',() => { 
    watch(babelSrc, {ignoreIntial:true, read:false}, function(file) { 
    return babelStream(gulp.src(file.path)); 
    }); 
    return babelStream(gulp.src(babelSrc)); 
});