包详细信息

gulp-rev-rewrite

thomasvantuycom25.2kMIT6.0.0

Rewrite references to assets that have been revisioned using gulp-rev

asset, assets, gulpplugin, replace

自述文件

gulp-rev-rewrite

Build Status npm semantic-release

Effortlessly rewrite references to revisioned assets by incorporating gulp-rev-rewrite into your revisioning workflow powered by gulp-rev.

Install

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

Usage

Option 1: Inline revisioning

In this approach, revisioning and rewriting are done in a single gulp task.

import gulp from 'gulp';
import rev from 'gulp-rev';
import revRewrite from 'gulp-rev-rewrite';

function revision() {
  return gulp.src('dist/**/*.{css,js}')
    .pipe(rev())
    .pipe(gulp.src('dist/**/*.html'))
    .pipe(revRewrite())
    .pipe(gulp.dest('dist'));
}

export default revision;

Option 2: Separate revisioning and rewriting

This approach separates asset revisioning from rewriting references to the revisioned assets.

import { readFileSync } from 'node:fs';
import gulp from 'gulp';
import rev from 'rev';
import revRewrite from 'gulp-rev-rewrite';

// Step 1: Asset revisioning
function revision() {
  return gulp.src('dist/assets/**/*.{css,js}')
    .pipe(rev())
    .pipe(gulp.dest('dist/assets'))
    .pipe(rev.manifest())
    .pipe(gulp.dest('dist/assets'));
}

// Step 2: Rewriting references
function rewrite() {
  const manifest = readFileSync('dist/assets/rev-manifest.json');

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

export default gulp.series(revision, rewrite);

API

revRewrite([options])

options

Type: Object

manifest

Type: Buffer (e.g., fs.readFileSync())

Read JSON manifests generated by gulp-rev. This allows replacing filenames that were revisioned in a previous task.

License

MIT © Thomas Vantuycom

更新日志

6.0.0 (2023-09-28)

Code Refactoring

  • move to ESM and require Node 18 (ce3b418)
  • remove unnecessary plugin options (3cc22fc)

Performance Improvements

  • speed up RegExp with character classes (35e2943)

BREAKING CHANGES

  • The plugin is now pure ESM
  • Requires Node 18
  • The prefix, modifyUnreved, and modifyReved options have been removed.