grunt-batch
v0.2.4
Published
Easy way to run a shell command for each file.
Downloads
9
Maintainers
Readme
grunt-batch
Easy way to run a shell command for each file.
Getting Started
This plugin requires Grunt ~0.4
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-batch --save-dev
Once the plugin has been installed, it may be enabled inside your Gruntfile with this line of JavaScript:
grunt.loadNpmTasks('grunt-batch');
The "batch" task
Overview
In your project's Gruntfile, add a section named batch
to the data object passed into grunt.initConfig()
.
grunt.initConfig({
batch: {
options: {
cmd: function (f) {
return 'cat ' + f.src.join(' ') + ' > ' + f.dest;
},
setup: function (done) {
grunt.file.mkdir('tmp');
done();
}
},
your_target: {
// Target-specific file lists and/or options go here.
},
},
});
Options
options.cmd
Type: function
Default value: undefined
A function returning the command string to execute. It's executed for each file.
Example:
cmd: function (files) {
return 'cat ' + files.src.join(' ') + ' > ' + files.dest;
},
Will join all files in src
to dest
, using the system command cat
.
files
is a grunt files object:
{ src: ['source1', 'source2', 'source3'], dest: 'destination' }
The files object is generated by grunt, see the grunt documentation.
options.setup
Type: function
Default value: function (callback) { callback(); }
A function that will be executed once at the startup.
options.limit
Type: number
Default value: 1
The maximum number of tasks to run at any time.
Usage Examples
This example uses convert
(ImageMagick) to resize images. Tasks are run
in parallel, maximum 4 at any time.
The first target is images_preview, images are resized and transparences are replaced with white background, converted from png to jpeg.
The second target is images_large, images are resized, destination format is still png.
grunt.initConfig({
batch: {
options: {
limit: 4
},
images_preview: {
options: {
cmd: function (f) {
return 'convert ' + f.src[0] + ' -background "#ffffff" -flatten -resize 200x ' + f.dest;
},
},
files: [{
expand: true,
cwd: 'src/assets/images',
dest: 'dest/assets/images',
src: ['*.png'],
ext: '.preview.jpg',
}],
},
images_large: {
options: {
cmd: function (f) {
return 'convert ' + f.src[0] + ' -resize 800x ' + f.dest;
},
},
files: [{
expand: true,
cwd: 'src/assets/images',
dest: 'dest/assets/images',
src: ['*.png'],
}],
},
},
});
Contributing
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.
Release History
(Nothing yet)