Provides cross-browser version-control/cache-busting as a dynamic view helper in express.
JavaScript
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
examples
.gitignore
Readme.md
index.js
package.json

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