Hash assets for static websites.
- recursively hashes the filenames of all
.cssand.jsfiles and updates refererences in the.htmlfiles - supports absolute references, ie.
/css/main.css - supports children relative from
., ie.css/main.cssor./css/main.css - WARNING does not support relative from parents
.., such as../css/main.css - WARNING does not respect
<base>urls. - WARNING cli helper updates files in place
- gzip assets for web servers that support precompressed assets
npm install -g @ryanburnette/hash-assetshash-assets public/npm install @ryanburnette/hash-assetsnpx hash-assets public/npm install @ryanburnette/hash-assets'use strict';
var hashAssets = require('../index.js');
var siteroot = '/home/me/sites/example.com/public/';
console.info("\nWorking from '%s'", siteroot);
hashAssets(siteroot)
.then(function (changes) {
console.info('\nRenamed:');
Object.keys(changes.renamed).forEach(function (name) {
console.info("\t'%s' => '%s'", name, changes.renamed[name]);
});
console.info('\nRewrote urls in each of:');
changes.rewritten.forEach(function (name) {
console.info("\t'%s'", name);
});
})
.then(function () {
console.info('\nComplete.\n');
})
.catch(function (err) {
console.error('something bad happened', err);
});rsync -a --delete ./test/html_/ ./test/html/
hash-assets test/htmlWorking from '/Users/me/github.com/ryanburnette/hash-assets/test/html'
Renamed:
'/js/main.js' => '/js/main.b58d988070d02e44d27a6b019e23a1665bd1f790.js'
'/foo/js/main.js' => '/foo/js/main.b58d988070d02e44d27a6b019e23a1665bd1f790.js'
'/foo/css/style.css' => '/foo/css/style.e0bc30e345c7b5fc33f2186bd2a8d387b088e1eb.css'
'/css/style.css' => '/css/style.e0bc30e345c7b5fc33f2186bd2a8d387b088e1eb.css'
Rewrote urls in each of:
'/absolute.html'
'/relative.html'
'/foo/absolute.html'
'/foo/relative.html'
Complete.