Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Array de dependências na tarefa

Boa tarde,

Já que a tarefa recebe um array de dependências, eu poderia passar as duas tarefas exato? como fiz no código abaixo.

gulp.task('build-img', ['copy', 'clean'], function(){});

Porém fiz o teste e parece que elas executam em paralelo, mesmo usando return em cada uma das tarefas clean e copy:

Starting 'clean'...
Starting 'copy'...
Finished 'clean' after 25 ms
Finished 'copy' after 1.58 s
Starting 'build-img'...
Finished 'build-img' after 3.71 ms

É possível fazer esse processo fazendo que execute de forma síncrona, e funcione de acordo com o desejado?

Segue abaixo meu código completo.

var gulp = require("gulp"),
    imagemin = require("gulp-imagemin"),
    clean = require("gulp-clean");

gulp.task("copy", function(){
    return gulp.src("src/**/*")
        .pipe(gulp.dest("dest"));
});

gulp.task("clean", function(){
    return gulp.src("dist")
        .pipe(clean());
});

gulp.task("build-img", ["clean", "copy"], function(){
    gulp.src("dist/img/**/*")
        .pipe(imagemin())
        .pipe(gulp.dest("dist/img"));
});

Grato!.

1 resposta
solução!

Sim, claro. Eu ensino isso no curso:

var gulp = require('gulp')
  ,imagemin = require('gulp-imagemin')
  ,clean = require('gulp-clean');


gulp.task('copy', ['clean'], function() {
    return gulp.src('src/**/*')
        .pipe(gulp.dest('dist'));
});

gulp.task('clean', function() {
    return gulp.src('dist')
        .pipe(clean());
});

gulp.task('build-img', ['copy'], function() {

  gulp.src('dist/img/**/*')
    .pipe(imagemin())
    .pipe(gulp.dest('dist/img'));
});

A estratégia de esperar não vai funcionar como você acha que vai quando você tem duas dependências. Por que uma dependência não sabe que tem que esperar a outra para rodar, como no caso de gulp.task("build-img", ["clean", "copy"],.

Sucesso e bom estudo meu aluno.