JavaScript parser, mangler/compressor and beautifier toolkit for ES6+
—
Core minification functionality providing comprehensive JavaScript code optimization with configurable compression, mangling, and output formatting options.
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
});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")}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;
};
}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');"
});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.
}minify_sync only when necessary as it blocks the event loopInstall with Tessl CLI
npx tessl i tessl/npm-terser