Try it yourself with our free Js Minifier tool — runs entirely in your browser, no signup needed.

How to Minify JavaScript in Node.js

How to Minify JavaScript in Node.js

Minifying JavaScript code is an essential step in optimizing the performance of web applications. By removing unnecessary characters, such as whitespace and comments, minified code reduces the file size, making it faster to download and parse. In this guide, we will explore how to minify JavaScript in Node.js using the popular terser library.

Quick Example

Here is a minimal example of how to minify JavaScript code using terser:

const { minify } = require('terser');

const code = 'console.log("Hello World!");';
const minified = minify(code).code;

console.log(minified);
// Output: console.log("Hello World!");

To install terser, run the following command:

npm install terser

Step-by-Step Breakdown

Let's break down the code example:

const { minify } = require('terser');

We import the minify function from the terser library.

const code = 'console.log("Hello World!");';

We define a string containing the JavaScript code to be minified.

const minified = minify(code).code;

We call the minify function, passing the code as an argument. The minify function returns an object with a code property containing the minified code.

console.log(minified);

We log the minified code to the console.

Handling Edge Cases

Here are some common edge cases to consider:

Empty/null input

const code = '';
const minified = minify(code).code;
console.log(minified); // Output: ''

terser handles empty input by returning an empty string.

Invalid input

const code = ' invalid code ';
try {
  const minified = minify(code).code;
} catch (error) {
  console.error(error); // Output: Error: Unexpected token: invalid code
}

terser throws an error when encountering invalid input.

Large input

const largeCode = Array(10000).fill('console.log("Hello World!");').join('\n');
const minified = minify(largeCode).code;
console.log(minified); // Output: minified code

terser can handle large input, but be aware that it may take significant time and memory to process.

Unicode/special characters

const code = 'console.log("Hëllo Wørld!");';
const minified = minify(code).code;
console.log(minified); // Output: console.log("Hëllo Wørld!");

terser preserves Unicode characters and special characters in the minified output.

Common Mistakes

Here are some common mistakes to avoid:

Mistake 1: Not handling errors

// Wrong
const minified = minify(code).code;

// Correct
try {
  const minified = minify(code).code;
} catch (error) {
  console.error(error);
}

Always handle errors when calling the minify function.

Mistake 2: Using the wrong options

// Wrong
const minified = minify(code, { compress: false }).code;

// Correct
const minified = minify(code, { compress: true }).code;

Make sure to use the correct options when calling the minify function.

Mistake 3: Not checking the output

// Wrong
const minified = minify(code).code;

// Correct
if (minified) {
  console.log(minified);
} else {
  console.error('Minification failed');
}

Always check the output of the minify function to ensure it was successful.

Performance Tips

Here are some performance tips to keep in mind:

  1. Use caching: If you're minifying the same code multiple times, consider using a caching mechanism to store the minified output.
  2. Use parallel processing: If you're minifying large amounts of code, consider using parallel processing to take advantage of multiple CPU cores.
  3. Use a fast minifier: terser is a fast and efficient minifier, but you may want to explore other options, such as uglify-js, for specific use cases.

FAQ

Q: What is the difference between minification and compression?

Minification removes unnecessary characters from the code, while compression reduces the file size using algorithms like gzip.

Q: Can I use terser with other languages?

No, terser is specifically designed for JavaScript.

Q: How do I handle errors when using terser?

Use a try-catch block to catch any errors thrown by the minify function.

Q: Can I customize the minification process?

Yes, terser provides various options for customizing the minification process.

Q: Is terser compatible with Node.js 14?

Yes, terser is compatible with Node.js 14 and later versions.

AI agent tools available. The CodeTidy MCP Server gives Claude, Cursor, and other AI agents access to 60+ developer tools. One command: npx @codetidy/mcp