JSPM

  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 3600
  • Score
    100M100P100Q122763F
  • License MIT

Google Closure Compiler plugin for Webpack

Package Exports

  • webpack-closure-compiler

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (webpack-closure-compiler) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

webpack-closure-compiler

Google Closure Compiler plugin for Webpack

Webpack Closure Compiler Plugin

Table of Contents

Why use Closure Compiler instead of UglifyJS?

Closure Compiler is the most advanced JavaScript optimization tool. It generates smallest bundle and emits efficient JavaScript code by doing whole program analysis and optimization, removing closures and inlining function calls, as well as tree-shaking for AMD, CommonJS and ES2015 modules.

Installation

npm i -D webpack-closure-compiler

Usage

Options

compiler: <Object>

A hash of options to pass to google-closure-compiler.

jsCompiler: <Boolean>

Use pure JavaScript version of Closure Compiler (no Java dependency). Note that compilation time will be around 2x slower. Default is false. concurrency and jsCompiler options are mutually exclusive.

concurrency: <Number>

The maximum number of compiler instances to run in parallel, defaults to 1. concurrency and jsCompiler options are mutually exclusive.

test: <RegExp>

Process only files which filename satisfies specified RegExp, defaults to /\.js($|\?)/i.

Example

import path from 'path';
import ClosureCompilerPlugin from 'webpack-closure-compiler';

module.exports = {
    entry: [
        path.join(__dirname, 'app.js')
    ],
    module: {
        loaders: [{
            test: /\.js$/, exclude: /node_modules/,
            loaders: ['babel-loader?optional=runtime&stage=0&cacheDirectory']
        }]
    },
    output: {
        path: path.join(__dirname, '/'),
        filename: 'app.min.js'
    },
    plugins: [
        new ClosureCompilerPlugin({
          compiler: {
            language_in: 'ECMASCRIPT6',
            language_out: 'ECMASCRIPT5',
            compilation_level: 'ADVANCED'
          },
          concurrency: 3,
        })
    ]
};

Contributing

If you've spotted a bug, please, open an issue, and after discussion submit a pull request with a bug fix. If you would like to add a feature or change existing behaviour, open an issue and tell about what exactly you want to change/add.

License

MIT