2016-07-27 3 views
0

일련의 작업을 하나씩 실행하려고합니다. 득점 4.0에서 하나씩 실행하지만 제 3의 작업을 추가 할 때 꿀꺽 꿀꺽 마실 수 있습니다. 꿀꺽 꿀꺽 4.0 : 일련의 작업을 실행

gulp.task('concat-js', (done) => { 
     gulp.src([ 
     'app1.js', 
     'app2.js', 
     ]) 
     .pipe(concat("app.js")) 
     .pipe(gulp.dest('build')) 
     done(); 
    }); 

    gulp.task('concat-css', (done) => { 
     gulp.src([ 
     '.styles1.css', 
     '.style2.css' 
     ]) 
     .pipe(concat("app.css")) 
     .pipe(gulp.dest('build')) 
     done(); 
    }); 

    gulp.task('minify-js', (done) => { 
     gulp.src('./build/app.js') 
     .pipe(uglify()) 
     .pipe(gulp.dest('./build/')) 
     done(); 
    }) 

    //this works & creates /build with the app.js & app.css files 
    gulp.task('build-production-static-resource', gulp.series('concat-js', 'concat-css',, (done) => { 
     done(); 
    })); 

내가 빌드 폴더가 다른 작업 (minfy-JS)를 추가 모든 것을 & 시도를 시작 삭제하면

는 세 번째 작업은 빌드 폴더도 생성되지 않습니다 & 실패합니다.

//File not found with singular glob: /Users/user/myapp/build/app.js 
    gulp.task('build-production-static-resource', gulp.series('concat-js', 'concat-css', 'minify-js', (done) => { 
     done(); 
    })); 

답변

2

작업의 비동기 완료를 신호하는 방식이 잘못되었습니다. 덤프에서 비동기 완료를 신호 할 수있는 여러 가지 방법에 대한 개요는 this answer을 참조하십시오.

기본적으로 gulp.src()을 통해 만드는 모든 스트림은 비동기입니다. 즉, 스트림을 만들고 코드가 즉시 반환됩니다. 그러나 스트림의 실제 처리는 이후에만 으로 시작하여 태스크 기능을 종료합니다. 꿀꺽 마당이 스트림을 사용 중이며 스트림 처리가 완료 될 때까지 기다려야한다는 것을 알기 위해서는 작업의 스트림을 return해야합니다.

당신은 완전히 다른 일을하고 있습니다. 비동기 작업 완료를 알리는 또 다른 방법 인 콜백 함수 done을 호출합니다. 그러나이 경우 완전히 잘못된 방법입니다. 콜백 함수 done을 호출 할 때 생성 한 스트림이 처리조차 시작하지 않았기 때문입니다.

gulp는 귀하의 concat-js 작업이 완료되었다고 생각하지만 실제로는 작업 안의 코드가 실제로 시작되지 않았 음을 의미합니다. 따라서 minify-js 작업을 실행할 때 ./build/app.js 파일이 아직 생성되지 않았습니다. 팔. 오류.

이 항상 return 스트림을 사용자의 작업에서 수정하려면 :

gulp.task('concat-js',() => { 
    return gulp.src([ 
     'app1.js', 
     'app2.js', 
    ]) 
    .pipe(concat("app.js")) 
    .pipe(gulp.dest('build')) 
}); 

gulp.task('concat-css',() => { 
    return gulp.src([ 
     '.styles1.css', 
     '.style2.css' 
    ]) 
    .pipe(concat("app.css")) 
    .pipe(gulp.dest('build')) 
}); 

gulp.task('minify-js',() => { 
    return gulp.src('./build/app.js') 
    .pipe(uglify()) 
    .pipe(gulp.dest('./build/')) 
}) 

gulp.task('build-production-static-resource', gulp.series(
    'concat-js', 'concat-css', 'minify-js' 
));