A Brunch plugin that appends a unique SHA digest to asset filenames. Allows for far-future caching of assets.
Note: digest-brunch is not compatible with gzip-brunch.
npm install --save digest-brunch
Identify assets that you want to be digested with DIGEST(filename.ext)
, or a custom pattern of your choosing.
<!DOCTYPE html>
<html lang="en">
<head>
<script src="DIGEST(test.js)"></script>
<link rel="stylesheet" href="DIGEST(test.css)">
</head>
<body>
<script src="DIGEST(js/nested.js)"></script>
</body>
</html>
Run brunch build --production
and you'll see something like the following:
Note: digest-brunch can not be run in watch
mode. It's only intended for
production builds, run once.
<!DOCTYPE html>
<html lang="en">
<head>
<script src="test-75570c26.js"></script>
<link rel="stylesheet" href="test-e3eda643.css">
</head>
<body>
<script src="js/nested-4df52a0a.js"></script>
</body>
</html>
The asset files are also renamed, inside the public folder, to match the names above.
Optional You can override digest-brunch's default options by updating your
config.coffee
with overrides.
These are the default settings:
exports.config =
# ...
plugins:
digest:
# A RegExp where the first subgroup matches the filename to be replaced
pattern: /DIGEST\(\/?([^\)]*)\)/g
# After replacing the filename, should we discard the non-filename parts of the pattern?
discardNonFilenamePatternParts: yes
# RegExp that matches files that contain DIGEST references.
referenceFiles: /\.html$/
# How many digits of the SHA1 to append to digested files.
precision: 8
# Force digest-brunch to run in all environments when true.
alwaysRun: false
# Specify an array of environments to run in.
environments: ['production']
# Prepend an asset host URL to the file paths in the reference files. Use an object e.g. {production: 'http://production-asset-host.co'}
prependHost: null
# Output filename for a JSON manifest of reference file paths and their digest.
manifest: ''
# An array of infixes for alternate versions of files. This is useful when e.g. using retina.js (http://imulus.github.io/retinajs/) (@2x) for high density images.
infixes: []
- Add some code
- Add some tests
- Run
npm test
- Send a pull request
MIT