UNPKG

gulp-revmanifest

Version:

Generate a rev-manifest file, mapping original paths to revisioned counterparts.

133 lines (90 loc) 3.49 kB
# gulp-rev-manifest [![Build Status](https://travis-ci.org/lukeed/gulp-rev-manifest.svg?branch=master)](https://travis-ci.org/lukeed/gulp-rev-manifest) [![Gitter](https://badges.gitter.im/join_chat.svg)](https://gitter.im/sindresorhus/gulp-rev) > Generate a `rev-manifest.json` file, mapping original paths to revisioned counterparts. Make sure to set the files to [never expire](http://developer.yahoo.com/performance/rules.html#expires) for this to have an effect. ## Install This package expects you to have [`gulp-rev`](https://github.com/sindresorhus/gulp-rev) installed. ``` $ npm install --save-dev gulp-revmanifest ``` ## Usage ```js var gulp = require('gulp'); var rev = require('gulp-rev'); var revManifest = require('gulp-revmanifest'); gulp.task('default', function () { return gulp.src('src/*.css') .pipe(rev()) .pipe(revManifest()) .pipe(gulp.dest('dist')); }); ``` ## API ### revManifest([path], [options]) #### path Type: `string`<br> Default: `"rev-manifest.json"` Manifest file path. #### options.base Type: `string`<br> Default: `process.cwd()` Override the `base` of the manifest file. **Note:** This value is stripped from your destination path. #### options.cwd Type: `string`<br> Default: `process.cwd()` Override the `cwd` (current working directory) of the manifest file. #### options.merge Type: `boolean`<br> Default: `false` Merge existing manifest file. #### options.transformer Type: `object`<br> Default: `JSON` An object with `parse` and `stringify` methods. This can be used to provide a custom transformer instead of the default `JSON` for the manifest file. ## Examples ```js var gulp = require('gulp'); var rev = require('gulp-rev'); var revManifest = require('gulp-revmanifest'); gulp.task('default', function () { // by default, gulp would pick `assets/css` as the base, // so we need to set it explicitly: return gulp.src(['assets/css/*.css', 'assets/js/*.js'], {base: 'assets'}) .pipe(gulp.dest('build/assets')) // copy original assets to build dir .pipe(rev()) .pipe(gulp.dest('build/assets')) // write rev'd assets to build dir .pipe(revManifest()) .pipe(gulp.dest('build/assets')); // write manifest to build dir }); ``` An asset manifest will be written to `build/assets/rev-manifest.json`: ```json { "css/unicorn.css": "css/unicorn-d41d8cd98f.css", "js/unicorn.js": "js/unicorn-273c2cin3f.js" } ``` By default, `rev-manifest.json` will be replaced as a whole. To merge with an existing manifest, pass `merge: true` and the output destination (as `base`) to `rev.manifest()`: ```js var gulp = require('gulp'); var rev = require('gulp-rev'); var revManifest = require('gulp-revmanifest'); gulp.task('default', function () { // by default, gulp would pick `assets/css` as the base, // so we need to set it explicitly: return gulp.src(['assets/css/*.css', 'assets/js/*.js'], {base: 'assets'}) .pipe(rev()) .pipe(gulp.dest('build/assets')) .pipe(revManifest({ base: 'build/assets', // stripped from the destination path merge: true // merge with the existing manifest (if one exists) })) .pipe(gulp.dest('build/assets')); }); ``` You can optionally call `revManifest('manifest.json')` to give it a different path or filename. ## Integration For more info on how to integrate **gulp-rev-manifest** into your app, have a look at the [integration guide](integration.md). ## License MIT © [Sindre Sorhus](http://sindresorhus.com)