5.2.2 • Published 5 years ago
gulp-terser-js v5.2.2
gulp-terser-js
A Terser-js plugin for Gulp
Why choose terser?
uglify-esis no longer maintained anduglify-jsdoes not support ES6+.
terseris a fork ofuglify-esthat retains API and CLI compatibility withuglify-esanduglify-js@3. Source:Why choose terser?
Why choose gulp-terser-js
This plugin displays formatted error:

Installation
npm install gulp-terser-jsBasic Usage
const terser = require('gulp-terser-js')
const minifyJS = () =>
gulp.src('asset/js/*.js')
.pipe(terser({
mangle: {
toplevel: true
}
}))
.on('error', function (error) {
this.emit('end')
})
.pipe(gulp.dest('public/js/'))
gulp.task('minifyJS', minifyJS)Options
The options you can use can be found here.
Avanced Usage
const gulp = require('gulp')
const concat = require('gulp-concat')
const sourcemaps = require('gulp-sourcemaps')
const terser = require('gulp-terser-js')
const sourceMapOpt = {
sourceMappingURL: (file) => 'http://127.0.0.1/map/' + file.relative + '.map'
}
const mapsFolder = './public/map'
const minifyJS = () =>
gulp.src('./asset/js/*.js')
.pipe(gulp.dest(mapsFolder))
.pipe(sourcemaps.init())
.pipe(concat('script.js'))
.pipe(terser({
mangle: {
toplevel: true
}
}))
.on('error', function (error) {
if (error.plugin !== "gulp-terser-js") {
console.log(error.message)
}
this.emit('end')
})
.pipe(sourcemaps.write(mapsFolder, sourceMapOpt))
.pipe(gulp.dest('./public/js/'))
gulp.task('minifyJS', minifyJS)Source maps
When running Terser on compiled Javascript, you may run into issues with source maps.
If you need to pass the content of your source maps to Terser, first you must set the loadMaps option to true when initializing gulp-sourcemaps.
Next, make the content source map option true when piping Terser.
A basic setup may look like this:
gulp.src('asset/js/*.js')
.pipe(sourcemaps.init({ loadMaps: true }))
.pipe(terser({
sourceMap: {
content: true
}
}))
.pipe(sourcemaps.write())
.pipe(gulp.dest('dist'))Can I use terser to format error of an other gulp module ?
// ...
const less = require('gulp-less');
const generateCSS = () =>
gulp.src("./asset/css/*.less", srcOptions)
.pipe(less()).on("error", printLESSError)
.pipe(postcss([cssnano]))
.pipe(sourcemaps.write(path.relative(srcOptions.cwd, mapsFolder), sourceMapOpt))
.pipe(gulp.dest(outputBuildFolder))
function printLESSError(error) {
if (error.plugin === "gulp-less") {
terser.printError.call(this, {
name: error.type,
line: error.line,
col: error.column,
filePath: error.filename,
fileContent: '' + fs.readFileSync(error.filename),
message: (error.message || '').replace(error.filename, path.basename(error.filename)).split(' in file')[0],
plugin: error.plugin
})
} else {
console.log(error.message);
}
this.emit('end')
}Version
| Description | gulp-terser-js |
|---|---|
| Node Version | >= 8.10.0 |
| Terser Version | 4.1.4+ |
| Gulp Version | >= 4.X |