gulp-closure-compiler

Gulp plugin for Google Closure Compiler

npm install gulp-closure-compiler
47 downloads in the last day
192 downloads in the last week
461 downloads in the last month

gulp-closure-compiler

Build Status Dependency Status devDependency Status

Gulp plugin for Google Closure Compiler

Issues with the output or Java should be reported on the Closure Compiler issue tracker.

Install

npm install --save-dev gulp-closure-compiler

Example

Simple optimizations

Simple optimizations for classic minifying.

var gulp = require('gulp');
var closureCompiler = require('gulp-closure-compiler');

gulp.task('default', function() {
  gulp.src('src/*.js')
    .pipe(closureCompiler({
      compilerPath: 'bower_components/closure-compiler/compiler.jar',
      fileName: 'build.js'
    }))
    .pipe(gulp.dest('dist'));
});

Advanced optimizations

Advanced optimizations is much more aggressive. It's aimed for libraries like Closure Library.

var gulp = require('gulp');
var closureCompiler = require('gulp-closure-compiler');

gulp.task('default', function() {
  gulp.src('src/*.js')
    .pipe(closureCompiler({
      compilerPath: 'bower_components/closure-compiler/compiler.jar',
      fileName: 'build.js',
      compilerFlags: {
        closure_entry_point: 'app.main',
        compilation_level: 'ADVANCED_OPTIMIZATIONS',
        define: [
          "goog.DEBUG=false"
        ],
        externs: [
          'bower_components/este-library/externs/react.js'
        ],
        extra_annotation_name: 'jsx',
        only_closure_dependencies: true,
        output_wrapper: '(function(){%output%})();',
        warning_level: 'VERBOSE'
      }
    }))
    .pipe(gulp.dest('dist'));
});

API

closureCompiler(options)

options

fileName

Type: String
Required

Generated file name.

compilerPath

Type: String
Required

Path to compiler.jar

compilerFlags

Type: Object

Closure compiler flags.

How to download Closure Compiler

Use Bower.

{
  "name": "foo",
  "version": "0.0.0",
  "dependencies": {
    "closure-compiler": "http://dl.google.com/closure-compiler/compiler-latest.zip"
  }
}

Implementation notes

  • Closure compiler supports pipes, but not correctly (issue).
  • You don't need closurebuilder.py script, compiler knows how to resolve dependencies.
  • Java 1.7+ is required.

License

MIT © Daniel Steigerwald

npm loves you