GulpJS: Как обновлять изображения, а затем обновлять их ссылки в css файлах?

gulp.task('usemin', function () {

  return gulp.src(path.src + '*.html')
    .pipe(usemin({
      assetsDir: 'src',
      css: [ minifyCss(), 'concat', rev()],
      js: [uglify(), rev()],
      images: [rev()]
    }))
    .pipe(gulp.dest(path.dist));
});

Он не работает с изображениями.

Ответ 1

Философия gulp-rev-all - это хороший способ увидеть ревизию активов. Это очень хорошо объяснено в их Readme, что хэш должен также учитывать ссылки (ссылки) между пересмотренными файлами.

Я издевался над небольшим примером, который минимизирует изображение и файл css, который использует свойство background url, чтобы увидеть изменение нового пути к изображению.

gulp.task('image', function () {
  return gulp.src('image.jpeg')
    .pipe(img({ progressive: false }))
    .pipe(gulp.dest('tmp'));
});

gulp.task('css', function () {
  return gulp.src('test.css')
    .pipe(css())
    .pipe(gulp.dest('tmp'));
});

gulp.task('rev', ['image', 'css'], function () {
  return gulp.src('tmp/**')
    .pipe(rev())
    .pipe(gulp.dest('dist'));
});

Я удалил все причудливые вещи, чтобы быть более ясными, но вы можете увидеть весь пример здесь.