grunt-dactylographsy
v2.0.3
Published
A grunt plugin to fingerprint your assets while outputing the result.
Downloads
25
Readme
grunt-dactylographsy
Grunt task generating manifests with fingerprinted assets to be injected and cached via localstorage.
Please refer to the browser related repository for a more comprehensive explaination behind the concepts of the dactylographsy project.
Getting Started
This plugin requires Grunt ~0.4.2
If you haven't used Grunt before, be sure to check out the Getting Started guide, as it explains how to create a Gruntfile as well as install and use Grunt plugins. Once you're familiar with that process, you may install this plugin with this command:
Install node dependency via npm
npm install grunt-dactylographsy --save-dev
Once the plugin has been installed, it may be enabled inside your Gruntfile with this line of JavaScript:
grunt.loadNpmTasks('grunt-dactylographsy');
The "dactylographsy" task
Overview
In your project's Gruntfile, the dactylographsy
task is available to use.
You can run grunt dactylographsy
standalone
Or add it to an existing task: grunt.registerTask('test', ['clean', 'dactylographsy']);
Options
// Location of manifest file containing file information with hashes
location: 'dactylographsy.json'
// Root impacting location of dactylographsy.json
root: 'dist'
// The project's root url: written into manifest, consumed by client-side script
rootUrl: null
// Additional package url: e.g. if multiple packages reside on the same host
packageUrl: null
// Paths which assets are stored internally but which are not relevant for client-side script
// e.g. /dist. These will be removed from paths to assets!
devPaths: []
// The package name to identify the manifest by
package: 'None'
An example configuration can be found here and if you want to check the options you might want to check the Gruntfile itself.
Developing & Contributing
Developing on the task alone is fairly easy just git clone https://github.com/dactylographsy/grunt-dactylographsy.git
then cd grunt-dactylographsy
. From there one has to link the package to itself via npm link && npm link grunt-dactylographsy
which will allow for calling grunt dev
. Now just work the task/dactylographsy.js
and check results - feel free to submit a pull-request!
Release History
- 0.0.0 Development, do not use!
- 1.0.0 Initial release with grunt-task and client-side script
- 1.0.1 Add support for stripping dev folders from asset directories via devPaths option
- 1.0.2 Add versioned client side bundles
- 1.1.0 Refactor root path resolving and add support for cache prefix
- 1.1.1 Fix root path resolving adding stripping of null'ed values
- 1.1.2 Add a package url option
- 1.1.3 Release caused by upgrade of UglifyJS
- 1.2.0 Add injection of unprinted scripts in case of error
- 1.2.1 Delay caching while still immediately taking care of 404'ed assets
- 1.3.0 Feature detect localstorage
- 1.4.0 Add delayed refreshing of app
- 1.5.0 Add data-attribtue with script name to inline-scripts from cache
- 1.6.0 Add cache cleaning by unique identifer to not keep n-versions of files in cache and add cache delay
- 1.6.1 Fix assets being deduped by filename, extension and their path
- 1.7.0 Stable release
- 1.8.0 Add 'cacheManifests' option to indicate if manifests shall be cached or not
- 1.9.0 Add configurable logging (not removing console-statements with minifiction)
- 1.9.1 Fix major issue in script injection order (promise resolving on cache with earlier rejection)
- 1.9.2 Fix auto deferring inline scripts breaking the injection order too
- 1.9.3 Fix singarity of cached assets for adding entry on serialized object
- 1.10.0 Add using document fragments for injections (speeds up DOM access)
- 1.11.0 Fix issue where cached js-files where executed before uncached files
- 1.12.0 Add using
node-dactylographsy
and remove thereby duplicate sources - 1.13.0 Moves all browser related sources to
browser-dactylographsy
- 1.14.0 Add manifest fingerprint (versions manifests)
- 1.16.0 Add string hashing
- 2.0.0 Drop support for node <= 0.12
Acknowledgements
- ...to great people around me supporting me with ideas and feedback!