How to minify JavaScript code with Gulp and Terser
JavaScript code minification is a common performance optimization task in web development. You can perform minification manually with any JavaScript compression tool and serve the output file. But that doesn’t work well when you update your source code frequently. The best way to solve the problem is using a workflow automation toolkit.
One of the most popular automation solutions is gulp.js. Gulp is an open-source JavaScript tool used to automate pipelines that solve various issues. Gulp has a modular architecture and has tons of plugins created by a large community.
gulp-terser
plugin integrates the Terser JavaScript compressor with Gulp automated pipelines. This article provides
step-by-step instructions for setting the gulp-terser
plugin to minify JavaScript source code.
1. Installation
This guide assumes that you have Gulp v4 installed. If not, follow the official Gulp documentation guide to set up the Gulp environment.
Let’s install the gulp-terser
plugin to the project folder with npm
:
$ npm install gulp-terser --save-dev
or, if you prefer yarn
package manager:
$ yarn add gulp-terser --dev
2. Create gulpfile.js and script.js
In the project root, create gulpfile.js
and script.js
files. The gulpfile.js
file contains the Gulp pipelines
description. The script.js
file is a JavaScript source code file to compress.
3. Create gulp-terser pipeline
We’ll set up our JavaScript minification pipeline in three steps.
- A good start here is importing dependencies to your Gulp script. Add the following lines to
gulpfile.js
:var gulp = require('gulp'); var terser = require('gulp-terser');
- Declare a new function and call it
scripts
. This function will describe the JavaScript minification pipeline.function scripts() { return gulp.src('./script.js') .pipe(terser()) .pipe(gulp.dest('./dist')); }
- Bind
scripts
function to the default Gulp task by using CommonJSexports
module notation:exports.default = scripts;
Save the file and open the project directory in a terminal window. Run the gulp
command. You can see that minified
version of script.js was added into the dist
folder.
4. Automate pipeline to track changes
Right after the scripts
function declaration define a new one called watch
. This function will run the gulp.watch
method that tracks changes in the files by the provided path and runs a second parameter method each time changes are
detected.
function watch() {
gulp.watch('./script.js', scripts);
}
Add watch
method to Gulp tasks:
exports.watch = watch;
After that, you’ll be able to run the automated pipeline in the terminal window with the command gulp watch
. Each
time you put changes to the source code, you’ll get a minified version of it in the dist
directory.
Conclusion
In this tutorial, we created a gulp-terser
pipeline. In addition, we added an automated task to track changes in the
source file and run a build script on each source update. Find a complete example of the gulpfile.js configuration file
in the Minify-JS.com repository.
Published on Jan 26, 2022 by Oleh Pratsko