2017-11-03 7 views
0

나는 작업을 실행하여 일 개 발표 CSS 파일에 모든 CSS 파일을 CONCAT하려고 : 출력 CSS 파일의 글꼴 경로가 정확하지 않기 때문에, 그 후꿀꺽 거리는 작업을 순서대로 실행하는 방법은 무엇입니까?

gulp.task('task one',() => { 
    gulp.src([Dir + "**/*.css"]) 
     .pipe(concat(outFilename + ".css")) 
     .pipe(gulp.dest(destDir)); 
}); 

을, 그래서 나는 경로를 수정해야 .

gulp.task('task two',() => { 
    var urlAdjuster = require('gulp-css-url-adjuster'); 

    //change font path for released css files 
    gulp.src([releasePath + "/*.css"]) 
     .pipe(urlAdjuster({ 
      replace: ['../../fonts', '../fonts'], 
     })) 
     .pipe(gulp.dest(releasePath + "/")); 
); 

이 작업을 수행하려면이 두 가지 작업을 하나씩 차례로 실행해야합니다. 어떻게이 두 작업을 순서대로 실행하고 하나의 작업에 넣을 수 있습니까?

내가 시도

: series = require('gulp-series'); ----

--- 업데이트가 작동하지

gulp.task('task two', ['task one'], function() { 
    // Gulp. src (... 
}); 

----- 작동하지 ------------ -------------------------------------------- 나는 돌아 왔지만 그것을 사용했다. 이제 작동 중입니다. 실제 코드는 :이 올바른지

function procHTMLForRelease(stream, file) { 
    gulp.src([Dir + "**/*.css"]) 
     .pipe(concat(outFilename + ".css")) 
     .pipe(gulp.dest(destDir)); 

} 

function processRelease() { 


    // Grab all html files in the folder. 
    // Loop over them, process them, then spit em out. 
    gulp.src([paths.Source + "/*.html"]) 
     .pipe(foreach(procHTMLForRelease)) 
     .pipe(gulp.dest(paths.Release)); 

    // Process image files 
    gulp.src([paths.Source + "images/*.*"]) 
     .pipe(gulp.dest(paths.Release + "images/")); 

    // Copy font files 
    gulp.src([paths.html + "fonts/*.*", paths.html + "fonts/*/*.*"]) 
     .pipe(gulp.dest(paths.release + "/fonts/")); 


} 



gulp.task('task one',() => { return processRelease(); 
}); 
+0

원래 코드는 완전히 다른 예를 들면 다음과 같습니다 https://www.npmjs.com/package/run-sequence

: 여기 내가 그것을 해결하기 위해 할 것입니다 업데이트 된 것들로부터, 어떻게 왔어? – lofihelsinki

답변

0
gulp.task('task two', ['task one'], function() { 
    // gulp.src(... 
}); 

그것은 task two 대한 의존성 task one로 설정한다. 그러나이 작업을 수행하려면 task onereturn이어야합니다.

gulp.task('task one',() => { 
    return gulp.src([Dir + "**/*.css"]) 
     .pipe(concat(outFilename + ".css")) 
     .pipe(gulp.dest(destDir)); 
}); 
+0

@ lofihelsinki "return"을 사용했지만 작동하지 않습니다. 내 업데이트를 참조하십시오. –

+0

각 gulp.src를 자신의 작업에 넣고 대답으로 gulp.src를 반환해야합니다. 원래 예제는'gulp.src' 앞에'return'을 추가하면 작동합니다. 업데이트 예제에는 의존성이 없으므로 작동하지 않습니다. – lofihelsinki

0

이렇게 업데이트 된 코드를 수정하면 return이됩니다.

gulp.task('taks one', function() { 

    // Grab all html files in the folder. 
    // Loop over them, process them, then spit em out. 
    var one = gulp.src([paths.Source + "/*.html"]) 
     .pipe(foreach(procHTMLForRelease)) 
     .pipe(gulp.dest(paths.Release)); 

    // Process image files 
    var two = gulp.src([paths.Source + "images/*.*"]) 
     .pipe(gulp.dest(paths.Release + "images/")); 

    // Copy font files 
    var three = gulp.src([paths.html + "fonts/*.*", paths.html + "fonts/*/*.*"]) 
     .pipe(gulp.dest(paths.release + "/fonts/")); 

    // Return 
    return [ one, two, three]; 

}); 

함수 내부의 태스크는 비동기 적으로 실행되지만, 수행중인 모든 태스크에 따라 다른 함수를 만들 수 있습니다. 사람들을위한

gulp.task('task two', ['task one'], function() { 
    // Gulp. src (... 
}); 
-1

같은 문제를 가지고 솔루션을 찾고 :

// This will run in this order: 
// * build-clean 
// * build-scripts and build-styles in parallel 
// * build-html 
// * Finally call the callback function 
gulp.task('build', function(callback) { 
    runSequence('build-clean', 
       ['build-scripts', 'build-styles'], 
       'build-html', 
       callback); 
});