Getting Started

Requirements

  • Node.js: 20 or higher (Node 22 recommended)
  • Module System: ESM only ("type": "module" in package.json)

Installation

npm install @node-minify/core
# Or Yarn
yarn add @node-minify/core
# Or pnpm
pnpm add @node-minify/core
# Or Bun
bun add @node-minify/core

And install the compressor you want:

npm install @node-minify/terser
# Or Yarn
yarn add @node-minify/terser
# Or pnpm
pnpm add @node-minify/terser
# Or Bun
bun add @node-minify/terser

Quick Start

import { minify } from '@node-minify/core';
import { terser } from '@node-minify/terser';

// Basic usage with async/await
const result = await minify({
  compressor: terser,
  input: 'src/js/main.js',
  output: 'dist/main.min.js'
});

console.log(result);

Using Wildcards

import { minify } from '@node-minify/core';
import { terser } from '@node-minify/terser';

// Concatenate and minify all JS files
const result = await minify({
  compressor: terser,
  input: 'src/**/*.js',
  output: 'dist/bundle.min.js'
});

Using Promises

import { minify } from '@node-minify/core';
import { terser } from '@node-minify/terser';

minify({
  compressor: terser,
  input: 'src/**/*.js',
  output: 'dist/bundle.min.js'
}).then((min) => {
  console.log('Minified:', min);
}).catch((err) => {
  console.error('Error:', err);
});

In Memory (No File Output)

import { minify } from '@node-minify/core';
import { htmlMinifier } from '@node-minify/html-minifier';

const html = `
<!doctype html>
<html>
    <head>
        <meta charset="utf-8">
    </head>
</html>`;

const min = await minify({
  compressor: htmlMinifier,
  content: html
});

console.log(min);

With Options

import { minify } from '@node-minify/core';
import { terser } from '@node-minify/terser';

const result = await minify({
  compressor: terser,
  input: 'src/**/*.js',
  output: 'dist/bundle.min.js',
  options: {
    mangle: true,
    compress: {
      drop_console: true
    }
  }
});

Available Compressors

JavaScript

import { babelMinify } from '@node-minify/babel-minify';
import { esbuild } from '@node-minify/esbuild';
import { gcc } from '@node-minify/google-closure-compiler';
import { oxc } from '@node-minify/oxc';
import { swc } from '@node-minify/swc';
import { terser } from '@node-minify/terser';
import { uglifyJs } from '@node-minify/uglify-js';
import { uglifyEs } from '@node-minify/uglify-es';
import { yui } from '@node-minify/yui';

CSS

import { cleanCss } from '@node-minify/clean-css';
import { crass } from '@node-minify/crass';
import { cssnano } from '@node-minify/cssnano';
import { csso } from '@node-minify/csso';
import { esbuild } from '@node-minify/esbuild';
import { lightningCss } from '@node-minify/lightningcss';
import { sqwish } from '@node-minify/sqwish';
import { yui } from '@node-minify/yui'; // with type: 'css'

HTML

import { htmlMinifier } from '@node-minify/html-minifier';

JSON

import { jsonMinify } from '@node-minify/jsonminify';

Other

import { noCompress } from '@node-minify/no-compress';

More examples