grunt-mixin-dir

Utility to add directory handling to your grunt task

Usage no npm install needed!

<script type="module">
  import gruntMixinDir from 'https://cdn.skypack.dev/grunt-mixin-dir';
</script>

README

grunt-mixin-dir

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 = gruntMixinDir.call(this, yourTask);

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

Documentation

grunt-mixin-dir is a standalone function

gruntMixinDir.call(this, 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} this.data Container for additional input
 * @param {Function} [this.data.router] Routing function for determining names of files to output
 * @return {Object} Contains {srcFiles, router, destFiles}; the expanded filenames passed into `task`
 */

Examples

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 = gruntMixinDir.call(this, 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);
  });

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.

License

Copyright (c) 2013 Todd Wolfson

Licensed under the MIT license.