2015-05-15 1 views
0

У меня есть следующее заданиеИгнорирование зависимости задач в gulp.js

gulp.task('sass-build', ['clean-build'], function() { 
    // do stuff 
}); 

, который, очевидно, требует clean-build законченных перед началом работы. Тем не менее, я также хотел бы использовать эту задачу с gulp.watch без зависимости clean-build.

Я знаю, что вы могли бы решить эту проблему с помощью хелпера задачи, как предложено в Skipping Tasks Listed as Dependencies in Gulp, но это потребует использования gulp.run (который не рекомендуется) или gulp.start (который даже не описывалась, потому что это считается плохой практикой).

Что было бы лучшим способом сделать это? Или это единственный способ использовать gulp.run или gulp.start?

ответ

1

Подход, показанный в связанном вопросе, на самом деле не так уж плох. Вместо gulp.run вы можете использовать простые функции, которые делают то же самое:

var sassFunction = function() { 
    return gulp.src('blahbla') 
     .pipe(bla()) 
} 

gulp.task('sass-build', ['clean-build'], function() { 
    return sassFunction() 
}); 

gulp.task('sass-dev', function() { 
    return sassFunction(); 
}); 


gulp.task('watch', function() { 
    gulp.watch('your/sass/files/**/*.scss', ['sass-dev']) 
}); 

Вашего другой подход тоже не так уж плохо, и будет полностью включен с Глотком 4.

gulp.task('default', gulp.series('clean-build', gulp.parallel('sass-build'))); 

что-то высматривать, поскольку он полностью изменяет деревья зависимостей.

0

Я решил это используя run-sequence. Это также сделало весь многозадачный порядок намного яснее.

То, что я сделал, было удалено из clean-build зависимой от sass-build. Так со временем:

gulp.task('sass-build', function() { 
    // do stuff 
}); 

gulp.task('build', function() { 
    runSequence('clean-build', [..., 'sass-build', ...], 'index-build'); 
}); 

gulp.task('watch', function() { 
    gulp.watch('src/sass/*', ['sass-build']); 
}); 

Очень удобно!

Смежные вопросы