Gulp 使用 gulp-rev、gulp-rev-replace、gulp-rev-css-url 进行修订
Gulp revisioning with gulp-rev, gulp-rev-replace, gulp-rev-css-url
我正在尝试使用 gulp-rev、gulp-rev-replace 和 gulp-rev-css 重写对我的版本图像文件的引用-url.
我已设法修改文件并将清单与以下 gulp 代码合并:
gulp.task('revision', function(callback){
runSequence('revision-images', 'revision-scripts', 'revision-css', 'revreplace', callback);
});
gulp.task('revision-scripts', function(){
return gulp
.src('./build/*.js')
.pipe(rev())
.pipe(gulp.dest('./dist/build'))
.pipe(rev.manifest({
base: process.cwd(),
merge: true
}))
.pipe(gulp.dest('./dist'));
});
gulp.task('revision-css', function(){
return gulp
.src('./build/*.css')
.pipe(rev())
.pipe(override())
.pipe(gulp.dest('./dist/build'))
.pipe(rev.manifest({
base: process.cwd(),
merge: true
}))
.pipe(gulp.dest('./dist'));
});
gulp.task('revision-images', function(){
return gulp
.src(['./static-assets/img/*.*'])
.pipe(rev())
.pipe(gulp.dest('./dist/static-assets/img'))
.pipe(rev.manifest({
base: process.cwd(),
merge: true
}))
.pipe(gulp.dest('./dist'));
});
gulp.task("revreplace", function(){
var manifest = gulp.src('./dist/rev-manifest.json');
return gulp.src('./index.html')
.pipe(revReplace({
manifest: manifest
}))
.pipe(gulp.dest('./dist'));
});
这会在正确的位置生成合并的清单文件,并正确地控制静态资产的版本。
问题是它不会在版本化 CSS 中重写对版本化图像的引用。
当 运行ning 'revision-css'
我确实看到了对另一个 CSS 导入的更新引用,但图像引用仍然是未版本化文件的引用。
我使用 运行-sequence 包来强制版本控制和清单首先合并,这样替换将最后执行,但我不确定 运行 序列是问题所在。
我的图片在 CSS:
中被正常引用
background: url("../static-assets/img/nav-logo.png") no-repeat;
我改用 gulp-rev-all:
https://github.com/smysnk/gulp-rev-all
哪个有效:)
我正在尝试使用 gulp-rev、gulp-rev-replace 和 gulp-rev-css 重写对我的版本图像文件的引用-url.
我已设法修改文件并将清单与以下 gulp 代码合并:
gulp.task('revision', function(callback){
runSequence('revision-images', 'revision-scripts', 'revision-css', 'revreplace', callback);
});
gulp.task('revision-scripts', function(){
return gulp
.src('./build/*.js')
.pipe(rev())
.pipe(gulp.dest('./dist/build'))
.pipe(rev.manifest({
base: process.cwd(),
merge: true
}))
.pipe(gulp.dest('./dist'));
});
gulp.task('revision-css', function(){
return gulp
.src('./build/*.css')
.pipe(rev())
.pipe(override())
.pipe(gulp.dest('./dist/build'))
.pipe(rev.manifest({
base: process.cwd(),
merge: true
}))
.pipe(gulp.dest('./dist'));
});
gulp.task('revision-images', function(){
return gulp
.src(['./static-assets/img/*.*'])
.pipe(rev())
.pipe(gulp.dest('./dist/static-assets/img'))
.pipe(rev.manifest({
base: process.cwd(),
merge: true
}))
.pipe(gulp.dest('./dist'));
});
gulp.task("revreplace", function(){
var manifest = gulp.src('./dist/rev-manifest.json');
return gulp.src('./index.html')
.pipe(revReplace({
manifest: manifest
}))
.pipe(gulp.dest('./dist'));
});
这会在正确的位置生成合并的清单文件,并正确地控制静态资产的版本。
问题是它不会在版本化 CSS 中重写对版本化图像的引用。
当 运行ning 'revision-css'
我确实看到了对另一个 CSS 导入的更新引用,但图像引用仍然是未版本化文件的引用。
我使用 运行-sequence 包来强制版本控制和清单首先合并,这样替换将最后执行,但我不确定 运行 序列是问题所在。
我的图片在 CSS:
中被正常引用background: url("../static-assets/img/nav-logo.png") no-repeat;
我改用 gulp-rev-all:
https://github.com/smysnk/gulp-rev-all
哪个有效:)