node package manager
Share your code. npm Orgs help your team discover, share, and reuse code. Create a free org »


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.