Minify JavaScript with terser.
The latest version of gulp-minify
is using terser to minify files, this may cause some incompatible issues with earlier language versions for now, see https://github.com/hustxiaoc/gulp-minify/issues/27.
So gulp-minify@es5
is for the earlier language versions if your project is not ready for the ECMAScript 6 yet.
Install package with NPM and add it to your development dependencies:
npm install --save-dev gulp-minify
Basic usage: the following minifies every *.js
and *.mjs
files to *-min.js
and *-min.mjs
respectively. Note that the original files are preserved.
const minify = require('gulp-minify');
gulp.task('compress', function() {
gulp.src(['lib/*.js', 'lib/*.mjs'])
.pipe(minify())
.pipe(gulp.dest('dist'))
});
Options can be added to control more finely what's happening, for example:
const minify = require('gulp-minify');
gulp.task('compress', function() {
gulp.src('lib/*.js')
.pipe(minify({
ext:{
src:'-debug.js',
min:'.js'
},
exclude: ['tasks'],
ignoreFiles: ['.combo.js', '-min.js']
}))
.pipe(gulp.dest('dist'))
});
ext
An object that specifies output src and minified file extensions.
src
The suffix string of the filenames that output source files ends with.
min
[/\.(.*)-source\.js$/, '$1.js']
exclude
Will not minify files in the dirs.
noSource
Will not output the source code in the dest dirs.
ignoreFiles
Will not minify files which matches the pattern.
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
some
Preserve comments that start with a bang (!
) or include a Closure
Compiler directive (@preserve
, @license
, @cc_on
)
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
or false
.