Home

Awesome

grunt-mootools-packager

Grunt task for MooTools Packager projects.

Getting Started

This plugin requires Grunt ~0.4.2

If you haven't used Grunt before, be sure to check out the Getting Started guide, as it explains how to create a Gruntfile as well as install and use Grunt plugins. Once you're familiar with that process, you may install this plugin with this command:

npm install grunt-mootools-packager --save-dev

Once the plugin has been installed, it may be enabled inside your Gruntfile with this line of JavaScript:

grunt.loadNpmTasks('grunt-mootools-packager');

The "packager" task

Overview

In your project's Gruntfile, add a section named packager to the data object passed into grunt.initConfig().

grunt.initConfig({
  packager: {
    options: {
      name: 'Core' // Package name. (todo: use package.json)
    },
    your_target: {
      // Target-specific file lists and/or options go here.
      'mootools-all.js': 'Source/**.js'
    },
  },
});

Options

options.strip

Type: String or Array<String|RegExp> Default value: false

A single, or multiple, strings or regexp to remove from the combined code.

options.separator

Type: String Default value: grunt.util.linefeed

The delimeter to join all the source files together.

options.callback

Type: Function

The function to be called when compilation is finished. The compiled content will passed as the first argument in the callback function.

options.noOutput

Type: Boolean

If true no files will be written. Defaults to false.

options.name

Type: String or Object

The package name. TODO: Use package.json.

The name of the package, or, if there are multiple packages being built, an object with the names and paths to their source files.

grunt.initConfig({
  packager: {
    options: {
      name: {
        Core: 'js/mootools-core',
        More: 'js/mootools-more'
      }
    },
    all: {
      'dest/mootools.js': 'Source/**.js',
    },
  },
});

options.ignoreYAMLheader

Type: Booelan Default value: false

Ignores the YAML headers for dependency loading.

options.only

Type: String or Array

The specific components or packages to compile (with their dependencies).

NOTE: You can specify the .only value in the .options and it will apply to all configurations globally, but you can also specify an .only value for each configuration. This allows you to build numerous libraries with specific requirements.

grunt.initConfig({
  packager: {
    options: {
      name: {
        Core: 'js/mootools-core',
        More: 'js/mootools-more'
      }
    },
    // all of both libraries
    all: {
      src: [
        'js/mootools-core/Source/**/*.js',
        'js/mootools-more/Source/**/*.js'
      ],
      dest: 'mootools.js'
    },
    // the Form.Validator component and its requirements
    formValidator: {
      src: [
        'js/mootools-core/Source/**/*.js',
        'js/mootools-more/Source/**/*.js'
      ],
      only: [
        'More/Form.Validator'
      ]
      dest: 'form.validator.js'
    },
    // all of the More package and its requirements
    allOfMore: {
      src: [
        'js/mootools-core/Source/**/*.js',
        'js/mootools-more/Source/**/*.js'
      ],
      only: [
        'More/*'
      ]
      dest: 'more.js'
    }
  },
});

Other Usage Examples

Default Options

grunt.initConfig({
  packager: {
    options: {
      name: 'Core'
    },
    all: {
      'dest/mootools.js': 'Source/**.js',
    },
  },
});

Strip Options

grunt.initConfig({
  packager: {
    options: {
      name: 'Core',
      strip: '.*compat'
    },
    all: {
      'dest/mootools.js': 'Source/**.js',
    },
  },
});