У меня есть как javascript, так и css-файлы, которые я использую разветвленное репо gulp-rev lib [1], которое переименовывает файлы и обновляет ссылки на файлы в html-файле.У Gulp есть две задачи, конфликтующие друг с другом
К сожалению, между этими двумя задачами существует условие гонки, в результате чего либо ссылка на таблицу стилей будет указана в файле с именем md5, либо в результате удаляются файлы js.
Я попытался использовать обещания, а также обратные вызовы (см. Ниже), чтобы обеспечить синхронизацию задач, но никогда не используются оба ссылки css и js md5.
sindresorhus's lib только переименовывает файлы и не исправляет ссылки, поэтому есть лучший способ исправить ссылки html или использовать разветвленный плагин, куда они идут (с некоторыми исправлениями, которые мне не хватает)?
gulp.task('rev', ['rev-js']);
gulp.task('rev-js', ['rev-css'], function(cb) {
var context = rev.Context();
gulp.src(['./build/public/js/woddy.js', './build/public/js/angular.js', './build/public/js/components.js'])
.pipe(rev(context))
.pipe(gulp.dest('./build/public/js'));
gulp.src('./build/public/app.html')
.pipe(context.replace(/src="js\/(\w+\.js)"/g, 'src="js/{{$1}}"'))
.pipe(gulp.dest('./build/public'));
});
gulp.task('rev-css', function() {
var context = rev.Context();
gulp.src('./build/public/styles/woddy.css')
.pipe(rev(context))
.pipe(gulp.dest('./build/public/styles'));
gulp.src('./build/public/app.html')
.pipe(context.replace(/href="styles\/(\w+\.css)"/g, 'href="styles/{{$1}}"'))
.pipe(gulp.dest('./build/public'));
});
Также см. Документы о выполнении задач последовательно: https://github.com/gulpjs/gulp/blob/master/docs/recipes/running-tasks-in-series.md – nha