web-dev-qa-db-fra.com

Comment diriger vers une autre tâche dans Gulp?

J'essaie de DRY mon gulpfile. Là, j'ai une petite duplication de code avec laquelle je ne suis pas à l'aise. Comment cela peut-il être amélioré?

gulp.task('scripts', function() {
  return gulp.src('src/scripts/**/*.coffee')
    .pipe(coffeelint())
    .pipe(coffeelint.reporter())
    .pipe(coffee())
    .pipe(gulp.dest('dist/scripts/'))
    .pipe(gulp.src('src/index.html'))  // this
    .pipe(includeSource())             // needs
    .pipe(gulp.dest('dist/'))          // DRY
});

gulp.task('index', function() {
  return gulp.src('src/index.html')
    .pipe(includeSource())
    .pipe(gulp.dest('dist/'))
});

J'ai obtenu index comme tâche distincte, car je dois regarder src/index.html à la charge hépatique. Mais je regarde aussi mon .coffee les sources et quand elles changent, je dois mettre à jour src/index.html ainsi que.

Comment puis-je diriger vers index dans scripts?

19
srigi

gulp vous permet d'ordonner une série de tâches basées sur des arguments.

Exemple:

gulp.task('second', ['first'], function() {
   // this occurs after 'first' finishes
});

Essayez le code suivant, vous exécuterez la tâche "index" pour exécuter les deux tâches:

gulp.task('scripts', function() {
  return gulp.src('src/scripts/**/*.coffee')
    .pipe(coffeelint())
    .pipe(coffeelint.reporter())
    .pipe(coffee())
    .pipe(gulp.dest('dist/scripts/'));
});

gulp.task('index', ['scripts'], function() {
  return gulp.src('src/index.html')
    .pipe(includeSource())
    .pipe(gulp.dest('dist/'))
});

La tâche index nécessitera désormais la fin de scripts avant d'exécuter le code dans sa fonction.

25
SteveLacy

Si vous examinez la source d'Orchestrator, en particulier l'implémentation .start(), vous verrez que si le dernier paramètre est une fonction, il la traitera comme un rappel.

J'ai écrit cet extrait pour mes propres tâches:

  gulp.task( 'task1', () => console.log(a) )
  gulp.task( 'task2', () => console.log(a) )
  gulp.task( 'task3', () => console.log(a) )
  gulp.task( 'task4', () => console.log(a) )
  gulp.task( 'task5', () => console.log(a) )

  function runSequential( tasks ) {
    if( !tasks || tasks.length <= 0 ) return;

    const task = tasks[0];
    gulp.start( task, () => {
        console.log( `${task} finished` );
        runSequential( tasks.slice(1) );
    } );
  }
  gulp.task( "run-all", () => runSequential([ "task1", "task2", "task3", "task4", "task5" ));
3
Assaf Moldavsky