Syncs asset urls with the most recent vcs tag. Supports Git and Mercurial.
Credits: This plugin is basically an extension of Gilles Ruppert's grunt-asset-cachebuster. If you need asset versioning that isn't a VCS tag, use it instead.
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-html-vcs-sync --save-dev
Once the plugin has been installed, it may be enabled inside your Gruntfile with this line of JavaScript:
grunt.loadNpmTasks('grunt-html-vcs-sync');
In your project's Gruntfile, add a section named html_vcs_sync
to the data object passed into grunt.initConfig()
.
grunt.initConfig({
html_vcs_sync: {
vcs_name: {
options: {
// Task-specific options go here.
},
your_target: {
// Target-specific file lists and/or options go here.
},
}
},
});
Type: Array
Default value: []
Array of strings that, if in the url of an asset, will not have the version number appended. This is useful for CDNs or assets that are never changed.
Type: Object
The object describing your version control system.
Type: String
Default value: 'git'
The string name of your vcs. Currently only "mercurial" works.
Type: String
Default value: ""
Mercurial only: The path to your .hgtags file.
In this example, Mercurial is the VCS of choice. If the latest tag in .hgtags
is 1.0.2 then index.html
and another-page.html
would have all asset urls within them be appended with "?v=1.0.2" (or changed to "?v=1.0.2" if it had a version already added to the url).
grunt.initConfig({
html_vcs_sync: {
mercurial: {
options: {
vcs: {
type: 'mercurial',
tagLocation: '.hgtags'
},
ignore: ["code.jquery.com"]
},
files: {
'templates/index.html': ['templates/index.html'],
'templates/another-page.html': ['templates/another-page.html']
}
}
},
});
In this example, Git is the VCS of choice. If the active tag in the git repo is 1.0.2 then index.html
and another-page.html
would have all asset urls within them be appended with "?v=1.0.2" (or changed to "?v=1.0.2" if it had a version already added to the url).
grunt.initConfig({
html_vcs_sync: {
mercurial: {
options: {
ignore: ["code.jquery.com"]
},
files: {
'templates/index.html': ['templates/index.html'],
'templates/another-page.html': ['templates/another-page.html']
}
}
},
});
In lieu of a formal styleguide, take care to maintain the existing coding style. Add unit tests for any new or changed functionality. Lint and test your code using Grunt.