grunt-file-creator
v0.1.3
Published
Creates/writes to files from Javascript functions in the grunt config (useful for config files, etc).
Downloads
4,416
Readme
grunt-file-creator
A grunt task that creates/writes to files from Javascript functions in the grunt config (useful for config files, etc).
####Grunt ~0.4 Required
Getting Started
If you haven't used grunt before, be sure to check out the Getting Started guide.
From the same directory as your project's Gruntfile and package.json, install this plugin with the following command:
npm install grunt-file-creator --save-dev
Once that's done, add this line to your project's Gruntfile:
grunt.loadNpmTasks('grunt-file-creator');
If the plugin has been installed correctly, running grunt --help
at the command line should list the newly-installed plugin's task or tasks. In addition, the plugin should be listed in package.json as a devDependency
, which ensures that it will be installed whenever the npm install
command is run.
The file-creator task
Overview
This task is a multi task so any targets, files and options should be specified according to the multi task documentation.
Options
openFlags
Type: String
Default: 'w'
The flags passed to the open file method.
See the node.js fs docs for more info
Usage Examples
Write a file
In this example, running grunt file-creator:basic
(or grunt file-creator
because file-creator
is a multi task) will write a simple string to the file basic.txt under the folder dist.
// Project configuration.
grunt.initConfig({
"file-creator": {
"basic": {
"dist/basic.txt": function(fs, fd, done) {
fs.writeSync(fd, 'some basic text');
done();
}
}
}
});
Iterating a folder and writing the contents to a file.
In this example, running grunt file-creator:folder
(or grunt file-creator
because file-creator
is a multi task) will write the filtered contents of a folder to the file folder.txt under the folder dist.
The filtering is performed using the glob included with grunt (node-glob).
The glob operation is asynchronous. The target iteration performed by file-creator will wait until the done() method is called before moving on to the next target.
// Project configuration.
grunt.initConfig({
"file-creator": {
options: {
openFlags: 'w'
},
"folder": {
"dist/folder.txt": function(fs, fd, done) {
var glob = grunt.file.glob;
var _ = grunt.util._;
glob('test/fixtures/sample/**/*.js', function (err, files) {
var widgets = [];
_.each(files, function(file) {
widgets.push(file);
});
fs.writeSync(fd, '// this file is auto-generated. DO NOT MODIFY\n');
_.each(widgets, function(file, i) {
fs.writeSync(fd, file + ':' + i + '\n');
});
done();
});
}
}
}
}
});
Specifying filenames conditionally using grunt templates
For more information, see the grunt documentation on templates (http://gruntjs.com/api/grunt.template).
grunt.initConfig({
conditional: {
file: 'conditional.txt'
},
"file-creator": {
"conditional": {
files: [
{
file: "tmp/" + '<%= conditional.file %>',
method: function(fs, fd, done) {
fs.writeSync(fd, 'filenames can be set using grunt templates');
done();
}
}
]
}
}
});
Specifying filenames on the command line using grunt options
For more information, see the grunt documentation on options (http://gruntjs.com/api/grunt.option).
Using this command line, the file can be set conditionally using options.
grunt.initConfig({
"option": {
files: [
{
file: "tmp/" + (grunt.option('option-name') || 'option.txt'),
method: function(fs, fd, done) {
fs.writeSync(fd, 'filenames can be set as grunt options (passed on the command line)');
done();
}
}
]
}
}
});
For fully-working examples, see the test folder.