Calculate a revision value for each file based on file content, and export revision values by callback and
grunt.config()
for your custom usage, such as rename file, archive all files' revisions
This plugin requires Grunt ~0.4.5
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-export-filerev --save-dev
Once the plugin has been installed, it may be enabled inside your Gruntfile with this line of JavaScript:
grunt.loadNpmTasks('grunt-export-filerev')
This task will calculate a revision value for each file based on file content, and export revision values by callback and grunt.config()
for your custom usage, such as rename file, archive all files' revisions
var fs = require('fs')
var pkg = requrie('./packge.json')
grunt.initConfig({
'export-filerev': {
options: {
algorithm: 'md5', // default: 'md5'
length: 8,
onFileDone: function (revision, file, done) {
// custom usage about revision value of a certain file
fs.rename(file, path.join(revision, file), function (error) {
if (error) {
grunt.fail.warn(error)
}
done()
})
},
onAllFilesDone: function (summary, done) {
// custom usage about revisions summary
var archiveFile = path.join('archive', pkg.version, 'revision-summary.json')
summary = JSON.stringify(summary, null, 2)
fs.writeFile(archive, summary, function (error) {
if (error) {
grunt.fail.warn(error)
}
done()
})
}
},
target1: {
src: ['a.js', 'b.css', 'c.png'],
}
}
})
Type: string
Default: 'md5'
algorithm supported by crypto.createHash(algorithm)
, such as 'md5'
, 'sha1'
, 'sha256'
, 'sha512'
Type: number
Default: 8
The number of characters of revision value
Type: function (revision, file, done)
Default: function (revision, file, done) { done() }
Params:
-
revision
:string
Revision value based on file content -
file
:string
Path to a certain src file -
done
:function
Invoke this callback when you finish your custom operation, designed to support asynchronize
This callback will be invoked for each file after their revision value is calculated.
Type: function (summary, done)
Default: function (summary, done) { done() }
Params:
-
summary
:object
A map from src files to corresponding revision values -
done
:function
The same with the paramdone
ofoption.onFileDone
This callback will be invoked after revision values of all src files are calculated. Notice directories are ignore internally.
Apart from callback, this task also export revision summary on grunt.option()
with the key as the name of the task, including any colon-separated arguments or flags specified on the command-line, actually this.nameArgs
inside tasks is used as the key.