grunt-dactylographsy
Version:
A grunt plugin to fingerprint your assets while outputing the result.
97 lines (74 loc) • 5.23 kB
Markdown
# grunt-dactylographsy
[](https://travis-ci.org/dactylographsy/grunt-dactylographsy) ♦️
[](https://david-dm.org/dactylographsy/grunt-dactylographsy) ♦️
[](https://david-dm.org/dactylographsy/grunt-dactylographsy#info=devDependencies) ♦
[](http://badge.fury.io/js/grunt-dactylographsy)
> Grunt task generating manifests with fingerprinted assets to be injected and cached via localstorage.
Please refer to the [browser related repository](https://github.com/dactylographsy/browser-dactylographsy/blob/master/README.md) for a more comprehensive explaination behind the concepts of the dactylographsy project.
[](https://nodei.co/npm/grunt-dactylographsy/)
## Getting Started
This plugin requires Grunt `~0.4.2`
If you haven't used [Grunt](http://gruntjs.com/) before, be sure to check out the [Getting Started](http://gruntjs.com/getting-started) guide, as it explains how to create a [Gruntfile](http://gruntjs.com/sample-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
```shell
npm install grunt-dactylographsy --save-dev
``````
Once the plugin has been installed, it may be enabled inside your Gruntfile with this line of JavaScript:
```js
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
```js
// 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](https://github.com/dactylographsy/grunt-dactylographsy/blob/master/grunt/tasks/dactylographsy.js) and if you want to check the options you might want to check the [Gruntfile](https://github.com/dactylographsy/grunt-dactylographsy/blob/master/tasks/dactylographsy.js#L22) 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!