Setup GulpJS to Minify Javascript Files on Ubuntu 19.10

Updated on March 19, 2020
Setup GulpJS to Minify Javascript Files on Ubuntu 19.10 header image

Overview

GulpJS is a toolkit for automating tedious and repetitive tasks in your development environment. It can automate minification, obscuration, compiling, and more.

Prerequisites

First, set up a non-root user with sudo privileges. Click Here for instructions.

Install build-essential.

$ sudo apt-get install build-essential

Install curl.

$ sudo apt-get install curl

Installation

NodeJS and NPM

Update and upgrade your local packages.

$ sudo apt-get update
$ sudo apt-get upgrade

Install the latest stable release of NodeJS.

$ curl -sL https://deb.nodesource.com/setup_13.x | sudo -E bash -
$ sudo apt-get install -y nodejs

Verify the installation is successful.

$ node -v && npm -v
v13.11.0
6.13.7

GulpJS CLI

Install the GulpJS CLI.

$ sudo npm install -g gulp-cli

Verify the installation is successful.

$ gulp -v
CLI version: 2.2.0

Setup

To use GulpJS with plugins you need a gulpfile.js file and a package.json file.

  • gulpfile.js: configures, pipes and executes tasks along with plugin management.
  • package.json: keeps in track of dependencies and their versions.

Go to your project directory.

$ cd /path/to/project/

Initialize an NPM environment to create a package.json:

$ npm init

When prompted for a package name, use gulpjs. Press Enter to accept the default response for all other questions. Afterward, you should see this summary.

About to write to /root/package.json:

{
  "name": "gulpjs",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "",
  "license": "ISC"
}

Is this OK? (yes)

Type yes and press Enter.

Install the local gulp package and the gulp-uglify plugin.

npm install --save-dev gulp gulp-uglify

Creating the gulp task

Create a gulpfile.js in the root of the project.

nano gulpfile.js

Import the libraries, then, define a task. The example task is named exampleTask.

const gulp = require('gulp'); // Import Gulp
const uglify = require('gulp-uglify'); // Import Gulp Uglify (Javascript minify)

gulp.task('exampleTask', ()=>{ // define a task
    return gulp.src('/path/to/javascript/files/*.js') // source a directory full of anything ending with .js
        .pipe(uglify()) // minify the stream
        .pipe(gulp.dest('/path/to/destination/')); // send files to a destination
});

Make sure there is at least one javascript file in /path/to/javascript/files/:

$ ls /path/to/javascript/files/
file.js

Run the task.

$ gulp exampleTask
Working directory changed to ~
Using gulpfile ~/gulpfile.js
Starting 'exampleTask'...
Finished 'exampleTask' after 59 ms

/path/to/destination/ contains the minified file.

$ ls /path/to/destination/
file.js

For more information about gulp-uglify, see https://www.npmjs.com/package/gulp-uglify