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

Rodar task apenas quando outras concluidas

Se alguém conseguir da um help. Por um tempo usei o grunt agora migrando para o gulp me acostumando com o fluxo async do Gulp.

A dúvida é a seguinte.

Tenho as seguintes task's

A = Limpa o diretório dist e copia os arquivos da pasta src para dist.

B = Concatena e minifica os meus scripts e css.

C = Otimiza as imagens.

D = Task que apaga os arquivos da pasta DIST que são desnecessários, não quero deixar arquivos .js e .css que não estejam minificados na pasta.

Para isso criei um array qual passo o caminho dos itens que quero deletar e as exceções.

var filesDelete = [ './dist/js//*.js' ,'./dist/css//.css' ,'!./dist/js/**/.min.js' ,'!./dist/css/*/.min.css' ];

A task D ficam assim:

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

Chamando direto no gulp , (gulp d) funciona perfeitamente e apaga todos os arquivos JS e CSS que não tenham a extensão .min

Na minha Task default tenho algo assim:

gulp.task('default', ['a'], function(){

gulp.start('b', 'c');

});

A minha task default depende da A, para depois realizar as tasks B e C.

Se eu jogo a task D no fluxo

gulp.start('b', 'c', 'd');

O Gulp me explode alguns erros, falando que não existe os arquivos, por executar as task de modo async.

Olhei a documentação do gulp e não achei nada Existe uma maneira de executar essa task D. Apenas quando as outras já estiverem prontas?

1 resposta
solução!

Achei uma solução. Ao invés de inserir as taks b e c na taks default. Inseri como depedentes na task d

gulp.task('d', ['b', 'c'], function(){

...

});

Ai na minha task default

gulp.task('default', ['a'], function(){

gulp.start('d');

});