Skip to content
Rewrite references to assets revisioned by `gulp-rev`
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.
lib fix: allow replacing in query parameters Jan 15, 2019
.travis.yml ci: remove node 6 and add node 12 to travis Jul 2, 2019
LICENSE build: change package name and ownership May 5, 2018 docs: rewrite usage examples Jul 2, 2019
index.js chore(package): update xo to version 0.25.0 (#22) Sep 26, 2019
package.json chore(package): update xo to version 0.25.0 (#22) Sep 26, 2019

gulp-rev-rewrite Build Status npm semantic-release Greenkeeper badge

Rewrite references to assets revisioned by gulp-rev

This plugin is an improved and maintained fork of gulp-rev-replace.


npm install gulp-rev-rewrite --save-dev

Only LTS and current releases of Node are supported.


The most common use pattern consists of two steps:

  1. Revision your assets and create an asset manifest.
  2. Collect the revisioned paths from the manifest and rewrite references to them
const { src, dest, series } = require('gulp');
const rev = require('gulp-rev');
const revRewrite = require('gulp-rev-rewrite');

// Step 1
function revision() {
  return src('dist/assets/**/*.{css,js}')

// Step 2
function rewrite() {
  const manifest = src('dist/assets/rev-manifest.json');

  return src('dist/**/*.html')
    .pipe(revRewrite({ manifest }))

exports.default = series(revision, rewrite);

Alternatively, you can combine both steps with the use of gulp-filter.

const { src, dest } = require('gulp');
const filter = require('gulp-filter');
const rev = require('gulp-rev');
const revRewrite = require('gulp-rev-rewrite');

function revision() {
  const assetFilter = filter(['**', '!**/*.html'], { restore: true });

  return src('dist/**')
    .pipe(rev()) // Rename all files except html files

exports.default = revision;




Type: Object


Type: Stream (e.g., gulp.src())

Read JSON manifests written out by rev. Allows replacing filenames that were revisioned prior to the current task.


Type: String

Add a prefix to each replacement.

modifyUnreved, modifyReved

Type: Function

Modify the name of the unreved/reved files before using them. The function receives the unreved/reved filename as the first argument, and the Vinyl object of the current file as the optional second argument.

For example, if in your manifest you have:

{"js/": "js/"}

If you wanted to get rid of the js/ path just for .map files (because they are sourcemaps and the references to them are relative, not absolute) you could do the following:

const { src, dest } = require('gulp');

function replaceJsIfMap(filename) {
  if (filename.includes('.map')) {
    return filename.replace('js/', '');
  return filename;

function rewrite() {
  return src('dist/**/*.js')
        manifest: src('rev-manifest.json'),
        modifyUnreved: replaceJsIfMap,
        modifyReved: replaceJsIfMap

exports.default = rewrite;    


MIT © James K Nelson, Thomas Vantuycom

You can’t perform that action at this time.