我有 javascript 和 css 文件,我正在使用 gulp-rev lib[1] 的分叉存储库,它们都重命名文件并更新 html 文件中的文件引用。
不幸的是,这两个任务之间存在竞争条件,导致样式表引用以 md5 命名的文件或 js 文件胜出。
我尝试使用 Promise 和回调(见下文)来允许同步任务,但从来没有同时使用 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'));
});