or run

npx @tessl/cli init
Log in

Version

Tile

Overview

Evals

Files

docs

auto-detection.mdcli-interface.mdconfiguration.mdcss-minification.mdhtml-minification.mdimage-processing.mdindex.mdjavascript-minification.md
tile.json

tessl/npm-minify

Minifier of js, css, html and img files with CLI and programmatic interfaces

Workspace
tessl
Visibility
Public
Created
Last updated
Describes
npmpkg:npm/minify@14.1.x

To install, run

npx @tessl/cli install tessl/npm-minify@14.1.0

index.mddocs/

Minify

Minify is a comprehensive minification tool for web assets including JavaScript, CSS, HTML, and image files. It provides both a command-line interface and a programmatic API, supporting multiple minifiers for JavaScript (putout, terser, esbuild, swc), CSS (clean-css, lightningcss), HTML minification via html-minifier, and CSS base64 image inlining. The tool offers maximum flexibility with configurable options via .minify.json files and supports multiple output formats and minification strategies.

Package Information

  • Package Name: minify
  • Package Type: npm
  • Language: JavaScript (ES modules)
  • Installation: npm install minify (global: npm install minify -g)
  • Node.js Version: >=20
  • Deno Support: import {minify} from 'npm:minify';

Core Imports

import { minify } from "minify";

For CommonJS:

const { minify } = require("minify");

Individual minifier imports:

import { minify } from "minify";
// Access individual minifiers as properties
const jsMinified = await minify.js(source);
const cssMinified = await minify.css(source);
const htmlMinified = minify.html(source);  // Synchronous
const autoMinified = await minify.auto(source);

Basic Usage

Programmatic Usage

import { minify } from "minify";

// Minify a file by path (auto-detects type from extension)
const minifiedContent = await minify("./script.js");
console.log(minifiedContent);

// With custom options
const options = {
    js: {
        type: "terser",
        terser: {
            mangle: false
        }
    }
};
const result = await minify("./app.js", options);

CLI Usage

# Minify a file and output to console
minify script.js

# Minify and save to file
minify script.js > script.min.js

# Process stdin with specific type
cat script.js | minify --js

# Multiple files
minify *.js *.css *.html

Architecture

Minify is built around several key components:

  • Main Function: File-based minification with auto-detection by extension
  • Individual Minifiers: Dedicated functions for each asset type (js, css, html, img, auto)
  • Configuration System: .minify.json file support with directory traversal
  • CLI Interface: Full command-line tool with stdin/stdout support
  • Plugin Architecture: Multiple minifier backends for each asset type
  • Error Handling: Comprehensive validation and error reporting

Capabilities

JavaScript Minification

Minifies JavaScript source code using configurable minifiers including putout (default), terser, esbuild, and swc.

function minify.js(source: string, userOptions?: MinifyOptions): Promise<string>;

interface MinifyOptions {
  js?: {
    type?: 'putout' | 'terser' | 'esbuild' | 'swc';
    putout?: object;
    terser?: object;
    esbuild?: object;
    swc?: object;
  };
}

JavaScript Minification

CSS Minification

Minifies CSS data using configurable CSS minifiers including lightningcss (default) and clean-css, with automatic base64 image inlining.

function minify.css(data: string, userOptions?: MinifyOptions): Promise<string>;

interface MinifyOptions {
  css?: {
    type?: 'lightningcss' | 'clean-css';
    'clean-css'?: object;
  };
  img?: {
    maxSize?: number;
  };
}

CSS Minification

HTML Minification

Minifies HTML data using html-minifier-next with comprehensive default settings for aggressive minification.

function minify.html(data: string, userOptions?: MinifyOptions): string;

interface MinifyOptions {
  html?: {
    removeComments?: boolean;
    collapseWhitespace?: boolean;
    removeAttributeQuotes?: boolean;
    minifyJS?: boolean;
    minifyCSS?: boolean;
    // ... other html-minifier options
  };
}

HTML Minification

Image Processing (Base64 Inlining)

Converts CSS images to base64 inline format for reduced HTTP requests. Typically used automatically during CSS minification.

function minify.img(name: string, data: string, userOptions?: MinifyOptions): Promise<string>;

interface MinifyOptions {
  img?: {
    maxSize?: number; // Default: 102400 (100KB)
  };
}

Image Processing

Auto-Detection Minification

Automatically detects content format and applies the appropriate minifier. Tries multiple formats until one succeeds.

function minify.auto(data: string, options?: MinifyOptions): Promise<string>;

Auto-Detection

File-based Minification

Main minification function that processes files by extension (.js, .css, .html) and applies appropriate minifiers.

function minify(name: string, userOptions?: MinifyOptions): Promise<string>;

CLI Interface

Command-line interface supporting file processing, stdin/stdout, and various output formats.

Usage: minify [options] [files...]
Options:
  -h, --help     display this help and exit
  -v, --version  display version and exit
  --js           minify javascript from stdin
  --css          minify css from stdin
  --html         minify html from stdin
  --auto         auto detect format from stdin

CLI Interface

Configuration System

Support for .minify.json configuration files with directory traversal for CLI usage. Configuration files are automatically loaded by the CLI tool only.

Configuration

Types

interface MinifyOptions {
  js?: {
    type?: 'putout' | 'terser' | 'esbuild' | 'swc';
    putout?: PutoutOptions;
    terser?: TerserOptions;
    esbuild?: ESBuildOptions;
    swc?: SWCOptions;
  };
  css?: {
    type?: 'lightningcss' | 'clean-css';
    'clean-css'?: CleanCSSOptions;
  };
  html?: HTMLMinifierOptions;
  img?: {
    maxSize?: number;
  };
}

interface PutoutOptions {
  quote?: string;
  mangle?: boolean;
  mangleClassNames?: boolean;
  removeUnusedVariables?: boolean;
  removeConsole?: boolean;
  removeUselessSpread?: boolean;
}

interface HTMLMinifierOptions {
  removeComments?: boolean;
  removeCommentsFromCDATA?: boolean;
  removeCDATASectionsFromCDATA?: boolean;
  collapseWhitespace?: boolean;
  collapseBooleanAttributes?: boolean;
  removeAttributeQuotes?: boolean;
  removeRedundantAttributes?: boolean;
  useShortDoctype?: boolean;
  removeEmptyAttributes?: boolean;
  removeEmptyElements?: boolean;
  removeOptionalTags?: boolean;
  removeScriptTypeAttributes?: boolean;
  removeStyleLinkTypeAttributes?: boolean;
  minifyJS?: boolean;
  minifyCSS?: boolean;
}

Error Handling

Minify provides comprehensive error handling:

  • File Type Validation: Throws error for unsupported file extensions
  • Empty Name Validation: Throws "name could not be empty!" for missing file paths
  • Minifier Errors: Propagates errors from underlying minification tools
  • Configuration Errors: Handles .minify.json parsing and validation errors