Minify JavaScript with UglifyJS2.
Install package with NPM and add it to your development dependencies:
npm install --save-dev gulp-uglify
var gulp = require('gulp');
var uglify = require('gulp-uglify');
var pump = require('pump');
gulp.task('compress', function (cb) {
pump([
gulp.src('lib/*.js'),
uglify(),
gulp.dest('dist')
],
cb
);
});
To help properly handle error conditions with Node streams, this project
recommends the use of pump
. For more
information, see Why Use Pump?.
-
mangle
Pass
false
to skip mangling names. -
output
Pass an object if you wish to specify additional output options. The defaults are optimized for best compression.
-
compress
Pass an object to specify custom compressor options. Pass
false
to skip compression completely. -
preserveComments
A convenience option for
options.output.comments
. Defaults to preserving no comments.-
all
Preserve all comments in code blocks
-
license
Attempts to preserve comments that likely contain licensing information, even if the comment does not have directives such as
@license
or/*!
.Implemented via the
uglify-save-license
module, this option preserves a comment if one of the following is true:- The comment is in the first line of a file
- A regular expression matches the string of the comment.
For example:
MIT
,@license
, orCopyright
. - There is a comment at the previous line, and it matches 1, 2, or 3.
-
function
Specify your own comment preservation function. You will be passed the current node and the current comment and are expected to return either
true
orfalse
. -
some
(deprecated)Preserve comments that start with a bang (
!
) or include a Closure Compiler directive (@preserve
,@license
,@cc_on
). Deprecated in favor of thelicense
option, documented above.
-
You can also pass the uglify
function any of the options listed
here to modify
UglifyJS's behavior.
gulp-uglify
emits an 'error' event if it is unable to minify a specific file.
The GulpUglifyError constructor is exported by this plugin for instanceof
checks.
It contains the following properties:
fileName
: The full file path for the file being minified.cause
: The original UglifyJS error, if avialable.
Most UglifyJS error messages have the following properties:
message
(ormsg
)filename
line
By default, gulp-uglify
uses the version of UglifyJS installed as a dependency.
It's possible to configure the use of a different version using the "minifier" entry point.
var uglifyjs = require('uglify-js'); // can be a git checkout
// or another module (such as `uglify-js-harmony` for ES6 support)
var minifier = require('gulp-uglify/minifier');
var pump = require('pump');
gulp.task('compress', function (cb) {
// the same options as described above
var options = {
preserveComments: 'license'
};
pump([
gulp.src('lib/*.js'),
minifier(options, uglifyjs),
gulp.dest('dist')
],
cb
);
});