gulp-cache

A cache proxy task for Gulp

npm install gulp-cache
86 downloads in the last day
769 downloads in the last week
2 818 downloads in the last month

gulp-cache status Dependency Status

A temp file based caching proxy task for Gulp.

Usage

var gulp = require('gulp');
var jshint = require('gulp-jshint');
var cache = require('gulp-cache');

gulp.task('lint', function() {
  gulp.src('./lib/*.js')
    .pipe(cache(jshint('.jshintrc'), {
      key: makeHashKey,
      // What on the result indicates it was successful
      success: function (jshintedFile) {
        return jshintedFile.jshint.success;
      },
      // What to store as the result of the successful action
      value: function (jshintedFile) {
        // Will be extended onto the file object on a cache hit next time task is ran
        return {
          jshint: jshintedFile.jshint
        };
      }
    })
    .pipe(jshint.reporter('default'));
});

var jsHintVersion = '2.4.1',
  jshintOptions = fs.readFileSync('.jshintrc');
function makeHashKey(file) {
  // Key off the file contents, jshint version and options
  return [file.contents.toString('utf8'), jshintVersion, jshintOptions].join('');
}

Options

Key

[Optional] What to use to determine the uniqueness of an input file for this task.

  • Can return a string or a promise that resolves to a string. Optionally, can accept a callback parameter for idiomatic node style asynchronous operations.

  • The result of this method is converted to a unique MD5 hash automatically; no need to do this yourself.

  • Defaults to file.contents if a Buffer, or undefined if a Stream.

Success

[Optional] How to determine if the resulting file was successful.

  • Must return a truthy value that is used to determine whether to cache the result of the task.

  • Defaults to true, so any task results will be cached.

Value

[Optional] What to store as the cached result of the task.

  • Can be a function that returns an Object or a promise that resolves to an Object. Optionally, can accept a callback for idiomatic node style asynchronous operations.

  • Can also be set to a string that will be picked (using _.pick) of the task result file.

  • The result of this method is run through JSON.stringify and stored in a temp file for later retrieval.

  • Defaults to 'contents' which will grab the resulting file.contents and store them as a string.

License

The MIT License (MIT)

Copyright (c) 2014 Jacob Gable

npm loves you