Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Provides cross-browser version-control/cache-busting as a dynamic view helper in express.
JavaScript
branch: master

Readme.md

Express Cachebuster

express-cachebuster provides cross-browser version-control/cache-busting as a dynamic view helper in express.

This was made as an integrated feature of Expressling.

Quick install

  $ npm install express-cachebuster

Usage

Add the following to your express app, e.g., server.js:

  app.configure(function() {
    app.set('public', __dirname + '/public');
  });

  app.dynamicHelpers({
    cacheBuster: require('express-cachebuster');
  });

In your views execute the cacheBuster function and pass your asset's path.

For more options see Goodies.

Note: $ = variable which is automagically returned by express-cachebuster.

EJS

  <%- cacheBuster('/js/mylibs/script.js') %>

Outputs HTML as shown below for development environment:

  <script src='/js/mylibs/script.js?v=$currentTimestamp' type='text/javascript'></script>

… and for production environment:

  <script src='/js/mylibs/script.js' type='text/javascript'></script>

Jade

  != cacheBuster('/stylesheets/style.css')

Outputs HTML as shown below for development environment:

  <link href='/stylesheets/style.css?v=$currentTimestamp' rel='stylesheet'>

… and for production environment:

  <link href='/stylesheets/style.css' rel='stylesheet'>

Goodies

You can pass an array of assets to the middleware:

EJS: <%- cacheBuster(['/stylesheets/style.css', '/stylesheets/ie.css']) %>

Jade: != cacheBuster(['/stylesheets/style.css', '/stylesheets/ie.css'])

Outputs HTML as shown below for development environment:

  <link href='/stylesheets/style.css?v=$currentTimestamp' rel='stylesheet'>
  <link href='/stylesheets/ie.css?v=$currentTimestamp' rel='stylesheet'>

… and for production environment:

  <link href='/stylesheets/style.css' rel='stylesheet'>
  <link href='/stylesheets/ie.css' rel='stylesheet'>

You can pass an object as the second parameter representing attributes and their values to add to the generated tag:

  cacheBuster('/scripts/require.js', {'data-message': 'Hello world', 'data-main': '/app/main.js'})

which outputs the following HTML:

  <script data-main='/app/main.js' data-message='Hello world' src='/scripts/require.js' type='text/javascript'></script>

Contributors

David Murdoch - hello@vervestudios.co - @davidmurdoch Butu - butu25@gmail.com - @butu5

License

MIT Licensed

Something went wrong with that request. Please try again.