Compress files and folders.
Install this grunt plugin next to your project's grunt.js gruntfile with: npm install grunt-contrib-compress
Then add this line to your project's grunt.js
gruntfile:
grunt.loadNpmTasks('grunt-contrib-compress');
Inside your grunt.js
file, add a section named compress
. This section specifies the files to compress and the options passed to either archiver (for zip) or tar (for tar/tgz) or zlib (for gzip).
This defines what files this task will compress and should contain key:value pairs.
The key (destination) should be an unique filepath (supports grunt.template) and the value (source) should be a filepath or an array of filepaths (supports minimatch).
This controls how this task operates and should contain key:value pairs, see options below.
This is used to define which mode to use, currently supports gzip, tar, tgz (tar gzip) and zip.
As of v0.3.0, this is now automatically detected per dest:src pair but can be overridden per target if desired.
This option adjusts internal filenames to be relative to provided path, within the resulting archive file.
This has been automatically detected per dest:src pair for some time now but can be overridden per target if desired.
This option performs a flat copy that dumps all the files into the root of the destination file, overwriting files if they exist.
This option sets the level of archive compression (defaults to 1).
Currently, gzip compression related options are not supported due to deficiencies in node's zlib library.
This option allows the creation of a root folder to contain files within the resulting archive file.
compress: {
zip: {
files: {
"path/to/result.zip": "path/to/source/*", // includes files in dir
"path/to/another.tar": "path/to/source/**", // includes files in dir and subdirs
"path/to/final.tgz": ["path/to/sources/*.js", "path/to/more/*.js"], // include JS files in two diff dirs
"path/to/single.gz": "path/to/source/single.js", // gzip a single file
"path/to/project-<%= pkg.version %>.zip": "path/to/source/**" // variables in destination
}
}
}
--
Task submitted by Chris Talkington.