grunt-esmangle

A Grunt plugin for mangling or minifying JavaScript files using Esmangle


Keywords
gruntplugin, minify, mangle
Licenses
MIT/GPL-2.0+
Install
npm install grunt-esmangle@0.3.4

Documentation

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.