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