node package manager
Share your code. npm Orgs help your team discover, share, and reuse code. Create a free org »


npm version Build Status Coverage Status


A gulp plugin for caching files in memory with incremental build helpers.

It is aimed to be used with Gulp 4, see why: Building with Gulp 4: Incremental builds.

If you are using Gulp 3, you will need to use gulp-memory-cache in combination with gulp-cached or similar. However be aware that both modules will maintain their own cache and therefore files are cached twice.


var gulp   = require('gulp');
var jshint = require('gulp-jshint');
var concat = require('gulp-concat');
var cache  = require('gulp-memory-cache');
gulp.task('buildJs', function () {
    return gulp.src('src/**/*.js', {since: cache.lastMtime('js')})
gulp.task('watch', function () {'src/**/*.js', gulp.series('buildJs'))
        .on('change', cache.update('js'));
gulp.task('build', gulp.series('buildJs', 'watch'));


cache(name, save)

  • name (required): the cache name
  • save (optional, default to true): whether or not to save / update cache

If save is truthy, it will save (update) streamed files to cache with name name. cache() then returns a stream containing all files in cache in the order they were added.

  • name (required): the cache name

Saves streamed files to cache with name name. Useful if you want to save in a pipeline for retrieving later (in the same or another pipeline).


  • name (required): the cache name

Flush (remove all files) cache name. Handy to force a stream to process again all its files.

cache.forget(name, filePath[, fn])

  • name (required): the cache name
  • filePath (required): the file path
  • fn: a file path transformation function

Remove from cache name file with path filePath. fn is a file path transformation function (see below for an example with cache.update().

cache.update(name[, fn])

  • name (required): the cache name
  • fn: a file path transformation function

To use in watch.on('change', ...) in order to avoid boilerplate code. It will automatically remove files which have been deleted from cache name. fn is a function to transform a file path and can be useful for removing a file from cache which name has been altered by a gulp plugin.'src/**/*.tpl.html', gulp.series('bundlePartials'))
    .on('change', cache.update('partials', function (filePath) {
        return filePath.replace(/.html$/, '.js')


  • name (required): the cache name

Returns the most recent mtime (modified time) of all files in specified cache, can be used in lieu of gulp.lastRun().


  • name (required): the cache name

Returns the last time a cache was updated, can also be used in lieu of gulp.lastRun().


  • name (optional): the cache name

Return cache named name, or all cached data if name is not supplied.

Cache API

cache.get(cacheName) returns a Cache object.