CtrlK
BlogDocsLog inGet started
Tessl Logo

tessl/npm-terser

JavaScript parser, mangler/compressor and beautifier toolkit for ES6+

Pending
Overview
Eval results
Files

minification.mddocs/

Minification

Core minification functionality providing comprehensive JavaScript code optimization with configurable compression, mangling, and output formatting options.

Capabilities

Minify Function

Asynchronous minification function that processes JavaScript code and returns optimized output with optional source maps.

/**
 * Minify JavaScript code asynchronously
 * @param files - Input JavaScript code as string, array of strings, or object mapping filenames to code
 * @param options - Minification configuration options
 * @returns Promise resolving to minification result
 */
function minify(
  files: string | string[] | { [file: string]: string },
  options?: MinifyOptions
): Promise<MinifyOutput>;

Usage Examples:

import { minify } from "terser";

// Single file minification
const code = `
  function greet(name) {
    console.log("Hello, " + name + "!");
    return true;
  }
`;

const result = await minify(code, {
  compress: { drop_console: true },
  mangle: true
});
console.log(result.code); // function greet(e){return!0}

// Multiple files with source map
const files = {
  "input1.js": "function add(a, b) { return a + b; }",
  "input2.js": "function multiply(x, y) { return x * y; }"
};

const result = await minify(files, {
  sourceMap: { filename: "bundle.js.map" },
  compress: true,
  mangle: true
});

Minify Sync Function

Synchronous minification function for cases where blocking execution is acceptable or required.

/**
 * Minify JavaScript code synchronously
 * @param files - Input JavaScript code as string, array of strings, or object mapping filenames to code
 * @param options - Minification configuration options
 * @returns Minification result
 */
function minify_sync(
  files: string | string[] | { [file: string]: string },
  options?: MinifyOptions
): MinifyOutput;

Usage Examples:

import { minify_sync } from "terser";

// Synchronous minification
const code = "var unused = 123; function test() { console.log('test'); }";
const result = minify_sync(code, {
  compress: {
    unused: true,
    dead_code: true
  }
});
console.log(result.code); // function test(){console.log("test")}

Minification Output

Result object containing the minified code and optional source map information.

interface MinifyOutput {
  /** The minified JavaScript code */
  code?: string;
  /** Source map as JSON string */
  map?: string;
  /** Decoded source map object for programmatic access */
  decoded_map?: object | null;
  /** Performance timing information (when timings: true) */
  timings?: {
    parse: number;
    rename: number;
    compress: number;
    scope: number;
    mangle: number;
    properties: number;
    format: number;
    total: number;
  };
}

Input Formats

Terser accepts multiple input formats for flexible integration:

// Single code string
type SingleInput = string;

// Array of code strings (processed in order)
type MultipleInputs = string[];

// Object mapping filenames to code
type FileMapping = { [filename: string]: string };

type InputFiles = SingleInput | MultipleInputs | FileMapping;

Usage Examples:

// String input
await minify("console.log('hello');");

// Array input (concatenated)
await minify([
  "var a = 1;",
  "var b = 2;",
  "console.log(a + b);"
]);

// Object input (named files)
await minify({
  "utils.js": "function helper() { return true; }",
  "main.js": "helper(); console.log('done');"
});

Error Handling

Minification functions can throw errors for various reasons including syntax errors, invalid options, or internal processing failures.

try {
  const result = await minify("invalid javascript syntax {{{");
} catch (error) {
  console.error("Minification failed:", error.message);
  // Handle parse errors, option validation errors, etc.
}

Performance Considerations

  • Use minify_sync only when necessary as it blocks the event loop
  • For large codebases, consider processing files in smaller batches
  • Enable compression passes sparingly as they can significantly increase processing time
  • Source map generation adds overhead but is essential for debugging production code

Install with Tessl CLI

npx tessl i tessl/npm-terser

docs

advanced.md

cli.md

compression.md

configuration.md

formatting.md

index.md

mangling.md

minification.md

tile.json