auto-reload-brunch
Version:
Adds automatic browser reloading support to brunch.
42 lines (38 loc) • 1.24 kB
JavaScript
(function() {
var WebSocket = window.WebSocket || window.MozWebSocket;
var br = window.brunch = (window.brunch || {});
var ar = br['auto-reload'] = (br['auto-reload'] || {});
if (!WebSocket || ar.disabled) return;
var cacheBuster = function(url){
var date = Math.round(Date.now() / 1000).toString();
url = url.replace(/(\&|\\?)cacheBuster=\d*/, '');
return url + (url.indexOf('?') >= 0 ? '&' : '?') +'cacheBuster=' + date;
};
var reloaders = {
page: function(){
window.location.reload(true);
},
stylesheet: function(){
[].slice
.call(document.querySelectorAll('link[rel="stylesheet"]'))
.filter(function(link){
return (link != null && link.href != null);
})
.forEach(function(link) {
link.href = cacheBuster(link.href);
});
}
};
var port = ar.port || 9485;
var host = (!br['server']) ? window.location.hostname : br['server'];
var connection = new WebSocket('ws://' + host + ':' + port);
connection.onmessage = function(event) {
var message = event.data;
if (ar.disabled) return;
if (reloaders[message] != null) {
reloaders[message]();
} else {
reloaders.page();
}
};
})();