Gulp-rev用生成的哈希替换文件

时间:2015-08-26 20:02:53

标签: hash gulp gulp-rename gulp-rev

我开始使用Gulp,我想创建一个任务,用哈希重命名文件(js,css),然后将它们注入html。

我实际上有两个功能可以实现我想要的功能,但我无法弄清楚如何删除旧文件并保留新的js和css哈希文件。

有些人可以给我一个提示吗?这是我现在的代码:

obs:'config'变量具有文件夹位置

gulp.task('prod:rev',['prod:revision'],function() { 
  var manifest = gulp.src(config.prod.manifest);
  return gulp
    .src(config.prod.header)
    .pipe(plugin.revReplace({manifest: manifest}))
    .pipe(gulp.dest('../'));
});

gulp.task('prod:revision',function(){
  var revJs = gulp
   .src(config.scripts.build+'*.js')
   .pipe(plugin.rev())
   .pipe(gulp.dest(config.scripts.build))
   .pipe(plugin.rev.manifest({merge: true}))
   .pipe(gulp.dest(config.prod.path));

  var revCss = gulp
   .src(config.styles.build+'*.css')
   .pipe(plugin.rev())
   .pipe(gulp.dest(config.styles.build))
   .pipe(plugin.rev.manifest({merge: true}))
   .pipe(gulp.dest(config.prod.path));

  return merge(revJs,revCss);

3 个答案:

答案 0 :(得分:0)

我目前在一个类似的问题上有一个开放的question - 我正确地将文件加入,但是没有用gulp-useref将它们注入到html中(你可以检查我的工作方法)关于useref的问题)。我怀疑我使用的目录有些恶意,但是现在我选择使用不同的缓存破坏方案:

var cb = Math.random();

....
.pipe($.replace('dist/css/lib.css', 'dist/css/lib.css?cb=' + cb))
....

这可能不是您想要的答案,但它可能是您需要的答案。 :)

答案 1 :(得分:0)

根据gulp-rev readme.md,您可能还希望使用gulp-rev-delete-original删除未填充的原件。

答案 2 :(得分:0)

在调用.pipe(rev())

之后尝试放置此内容

const revDelete = require('gulp-rev-delete-original');

... .pipe(revDelete()) ...

这将删除“未隐藏”的文件。