Utility to add directory handling to your grunt task

npm install grunt-mixin-dir
3 downloads in the last day
11 downloads in the last week
41 downloads in the last month

grunt-mixin-dir Donate on Gittip

Utility to add directory handling to your grunt task

Getting Started

Install the module with: npm install grunt-mixin-dir

var gruntMixinDir = require('grunt-mixin-dir')(grunt);

// Set up your task for directories
grunt.registerMultiTask('your-task-dir', 'Run your task on a directory', function () {
  // Run gruntMixinDir with your task on `this`
  var taskInfo =, yourTask);

  // Print your success message
  grunt.log.writeln('File "' + taskInfo.destFiles.join('", "') + '" created.');


grunt-mixin-dir is a standalone function, task);
 * Add directory and routing functionality to grunt task
 * @param {Function} task Function to call with grunt options
 * @param {Object} this Same context as one would expect from grunt
 * @param {Object} this.file Container for src and dest
 * @param {String|String[]} this.file.src File or list of files to use as input
 * @param {String} this.file.dest Directory to send all output to
 * @param {Object} Container for additional input
 * @param {Function} [] Routing function for determining names of files to output
 * @return {Object} Contains {srcFiles, router, destFiles}; the expanded filenames passed into `task`


The following example is taken from grunt-html-prettyprinter.

// Inside of tasks/html-prettyprinter
// Load in gruntMixinDir
var gruntMixinDirFn = require('grunt-mixin-dir');
module.exports = function (grunt) {
  // Load in gruntMixinDir
  gruntMixinDir = gruntMixinDirFn(grunt);

  // Beautify directory of files
  grunt.registerMultiTask('html-prettyprinter-dir', 'Prettyprint HTML directory from src to dest', function () {
    // Run the prettyprint task on our items
    var taskInfo =, function callPrettyprinterFile () {
      grunt.helper('html-prettyprinter-file', this);

    // Fail task if errors were logged.
    if (this.errorCount) { return false; }

    // Otherwise, print a success message.
    grunt.log.writeln('File "' + taskInfo.destFiles.join('", "') + '" created.');

  grunt.registerHelper('html-prettyprinter-file',  function prettyprintFile (options) {
    // Collect the filepaths we need
    var file = options.file,
        src = file.src,
        dest = file.dest;

    // Run beautification...

    // Output beautified content
    grunt.file.write(dest, beautifiedContent);


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.


Copyright (c) 2013 Todd Wolfson

Licensed under the MIT license.

npm loves you