我有兩個javascript和css文件,我使用gulp-rev lib [1]的分叉回購,它們都重命名文件並更新html文件中的文件引用。Gulp有兩個任務相互衝突
不幸的是,這兩個任務之間存在爭用條件,導致樣式表引用以md5命名的文件或者js文件勝出。
我試圖使用承諾以及回調(見下文),以允許任務的同步,但從來沒有對css和js md5引用做出。
sindresorhus的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