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.
This plugin requires Grunt
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
The "dactylographsy" task
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']);
// Location of manifest file containing file information with hasheslocation: 'dactylographsy.json'// Root impacting location of dactylographsy.jsonroot: 'dist'// The project's root url: written into manifest, consumed by client-side scriptrootUrl: null// Additional package url: e.g. if multiple packages reside on the same hostpackageUrl: 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 bypackage: 'None'
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!
- 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-dactylographsyand remove thereby duplicate sources
- 1.13.0 Moves all browser related sources to
- 1.14.0 Add manifest fingerprint (versions manifests)
- 1.16.0 Add string hashing
- 2.0.0 Drop support for node <= 0.12
- ...to great people around me supporting me with ideas and feedback!