@ryanburnette/hash-assets

1.1.1 • Public • Published

hash-assets

repo npm

Hash assets for static websites.

Features

  • recursively hashes the filenames of all .css and .js files and updates refererences in the .html files
  • supports absolute references, ie. /css/main.css
  • supports children relative from ., ie. css/main.css or ./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

todo

  • gzip assets for web servers that support precompressed assets

cli

npm install -g @ryanburnette/hash-assets
hash-assets public/

npx

npm install @ryanburnette/hash-assets
npx hash-assets public/

js

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);
  });

Example

rsync -a --delete ./test/html_/ ./test/html/
hash-assets test/html
Working 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.

Readme

Keywords

none

Package Sidebar

Install

npm i @ryanburnette/hash-assets

Weekly Downloads

14

Version

1.1.1

License

ISC

Unpacked Size

11.3 kB

Total Files

19

Last publish

Collaborators

  • ryanburnette