grunt-file-creator

Creates/writes to files from Javascript functions in the grunt config (useful for config files, etc).

npm install grunt-file-creator
26 downloads in the last day
136 downloads in the last week
497 downloads in the last month

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();
          });
        }
      }
    }
  }
});

For fully-working examples, see the test folder.

npm loves you