grunt-rename-assets
v0.0.1
Published
Rename asset files with their MD5/SHA1 hashes.
Downloads
11
Maintainers
Readme
grunt-rename-assets
Rename asset files with their MD5/SHA1 hashes.
Getting Started
This plugin requires Grunt ~0.4.0
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:
npm install grunt-rename-assets --save-dev
Once the plugin has been installed, it may be enabled inside your Gruntfile with this line of JavaScript:
grunt.loadNpmTasks('grunt-rename-assets');
Options
skipIfHashed
Type: Boolean
Default: true
Skip if file name already contains the hash.
algorithm
Type: String
Default: sha1
Can be md5
, sha1
, sha256
, etc.
See possible algorithms.
format
Type: String
Default: {{basename}}-{{hash}}{{ext&&("."+ext)}}
Format for the new file name. You can use these variables:
- global: process, require, console, grunt
- file: hash, basename, ext, realpath
inject
Type: Object
Default: {}
Add more variables to use in format
. Keys are the variable names.
startSymbol
Type: String
Default: {{
endSymbol
Type: String
Default: }}
callback
Type: Function
Default: function() {}
The callback function gets two arguments (befores, afters)
where befores
and
afters
are the list of old and new file names respectively. You can use this
to access the current Grunt task.
Example
grunt.initConfig({
rename: {
assets: {
options: {
skipIfHashed: true,
startSymbol: '{{',
endSymbol: '}}',
algorithm: 'sha1',
format: '{{timestamp()}}-{{basename}}-{{hash}}-{{require("fs").statSync(realpath).size}}.{{ext}}',
inject: {
timestamp: function() {
return +new Date;
}
},
callback: function(befores, afters) {
var publicdir = require('fs').realpathSync('public');
var path = require('path');
var index = grunt.file.read('public/index.html'), before, after;
for (var i = 0; i < befores.length; i++) {
before = path.relative(publicdir, befores[i]);
after = path.relative(publicdir, afters[i]);
index = index.replace(before, after);
}
grunt.file.write('public/index.html', index);
}
},
files: [
{ src: [ 'public/css/*.css', 'public/js/*.js' ] }
]
}
}
});
Developer
- caiguanhao <[email protected]>