[javascript] Gulp.js 작업, src로 돌아 갑니까?
나는 꿀꺽 마시기 시작하고 예제 설정을 살펴 보았습니다. 어떤 사람들은 다음과 같은 구조를 가지고 있습니다 :
gulp.task("XXXX", function() {
gulp.src("....
다른 사람들은 이것을 가지고 있습니다 :
gulp.task("XXXX", function() {
return gulp.src("....
src 의 수익이 어떻게 다른지 궁금 합니다.
답변
당신은 return
작업이 비동기 있음을 나타냅니다. gulp.src()
스트림을 반환하므로 비동기입니다.
그것이 없으면 작업 시스템은 언제 끝났는지 알 수 없습니다. 문서를 읽으십시오 .
답변
종속 작업이 있는 경우 작업을 실행하기 전에 해당 작업이 종속 작업이 완료 될 때까지 기다리려면 스트림 을 반환 해야 합니다.
예 :
// without return
gulp.task('task1', function() {
gulp.src('src/coffee/*.coffee')
/* eg compile coffeescript here */
.pipe(gulp.dest('src'));
});
gulp.task('task2', ['task1'], function() {
gulp.src('src/*.js')
/* eg minfify js here */
.pipe(gulp.dest('dest'));
});
이 예제 에서는 task2 가 실행 되기 전에 task1 이 완료 될 것으로 예상 됩니다 (예 : coffeescript 또는 무엇이든 컴파일) . 그러나 아래 예제와 같이 return 을 추가 하지 않으면 비동기식으로 비동기식으로 실행됩니다. task2 는 태스크 1이 완료되기를 기다리지 않았 으므로 task1 의 컴파일 된 출력을 선택하지 않기 때문에 컴파일 된 coffeescript는 축소 되지 않습니다 . 따라서 우리는 항상 이런 상황에서 돌아와야합니다.
// with return
gulp.task('task1', function() {
return gulp.src('**/*.coffee')
/* your operations here */
.pipe(gulp.dest('dest'));
});
gulp.task('task2', ['task1'], function() {
return gulp.src('**/*.js')
/* your operations here */
.pipe(gulp.dest('dest'));
});
편집 : 여기의 레시피가 자세히 설명합니다. https://github.com/gulpjs/gulp/blob/master/docs/recipes/running-tasks-in-series.md
답변
작업 당 여러 스트림이있는 경우이 기능이 유용하다는 것을 알았습니다. 여러 스트림을 결합 / 병합하여 반환해야합니다.
var gulp = require('gulp');
var merge = require('gulp-merge');
gulp.task('test', function() {
var bootstrap = gulp.src('bootstrap/js/*.js')
.pipe(gulp.dest('public/bootstrap'));
var jquery = gulp.src('jquery.cookie/jquery.cookie.js')
.pipe(gulp.dest('public/jquery'));
return merge(bootstrap, jquery);
});
Gulps 작업 정의 구조를 사용하는 대안은 다음과 같습니다.
var gulp = require('gulp');
gulp.task('bootstrap', function() {
return gulp.src('bootstrap/js/*.js')
.pipe(gulp.dest('public/bootstrap'));
});
gulp.task('jquery', function() {
return gulp.src('jquery.cookie/jquery.cookie.js')
.pipe(gulp.dest('public/jquery'));
});
gulp.task('test', ['bootstrap', 'jquery']);