kyriesent / gulp-cache

A cache proxy task for Gulp

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

gulp-cache

NPM version status Coverage Status Dependency Status devDependency Status

A temp file based caching proxy task for gulp.

Usage

var fs = require('fs');

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('');
}

Clearing the cache

If you find yourself needing to clear the cache, there is a handy dandy cache.clearAll() method:

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

gulp.task('clear', function (done) {
  return cache.clearAll(done);
});

You can then run it with gulp clear.

Options

fileCache

[Optional] Where to store the cache objects

  • Defaults to new Cache({ cacheDirName: 'gulp-cache' })

  • Create your own with new cache.Cache({ cacheDirName: 'custom-cache' })

name

[Optional] The name of the bucket which stores the cached objects

  • Defaults to default

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 - 2015 Jacob Gable

About

A cache proxy task for Gulp

License:MIT License


Languages

Language:JavaScript 100.0%