A Grunt plugin for mangling or minifying JavaScript files using Esmangle.
JavaScript
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
tasks
tests
.gitattributes
.gitignore
.npmignore
.travis.yml
Gruntfile.js
LICENSE-GPL.txt
LICENSE-MIT.txt
README.md
package.json

README.md

grunt-esmangle Build status Dependency status

A Grunt plugin for mangling or minifying JavaScript files using Esmangle.

Getting started

This plugin requires Grunt v0.4.0+.

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-esmangle --save-dev

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

grunt.loadNpmTasks('grunt-esmangle');

The esmangle task

Overview

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

grunt.initConfig({
  'esmangle': {
    'options': {
      // Task-specific options go here
    },
    'your-target': {
      'options': {
        // Target-specific options go here
      },
      'files': {
        // Target-specific file lists go here
      }
    }
  }
});

Options

The options property accepts all the available Escodegen options. See the Escodegen wiki for an overview.

Additionally, there are two Grunt-specific options:

banner

Type: String Default: empty string

This string will be prepended to the beginning of the mangled/minified output. It is processed using grunt.template.process, using the default options.

(Default processing options are explained in the grunt.template.process documentation.)

report

Choices: false, 'min', 'gzip' Default: false

Either do not report anything, report only minification result, or report minification and gzip results.

Important: including 'gzip' results can make this task 5-10× slower depending on the size of the file.

Usage example

Here’s a practical example of grunt-esmangle:

grunt.initConfig({
  'esmangle': {
    'options': {
      // Don’t preserve semicolons at the end of blocks and programs
      'semicolons': false
    },
    'minify-plugins': {
      'options': {
        // Always use double quotes as string literal delimiter
        'quotes': 'double'
      },
      'files': {
        'dist/all-plugins.min.js': ['js/plugins/*.js']
      }
    },
    'minify-custom-scripts': {
      'options': {
        // Preserve comments
        'comment': true
      },
      'files': {
        'dist/all-custom-scripts.min.js': ['js/custom-scripts/*.js']
      }
    }
  }
});

Author

twitter/mathias
Mathias Bynens

License

grunt-esmangle is dual licensed under the MIT and GPL licenses.