Rand Stats

CSS::Minifier

zef:sasha

CSS::Minifier

Raku CSS minifier - produces smaller CSS through value normalization, color shortening, shorthand consolidation, and structural deduplication/merging.

Features

Installation

zef install CSS::Minifier

Installing from source

cd /path/to/CSS-Minifier
zef install .

Requires Raku 6.d or later.

Usage

Command Line

# Read from file
cssminify input.css > output.css

# Level 2 (structural optimizations: dedup, merging)
cssminify -l2 input.css > output.css

# Write to file
cssminify -o output.css input.css

# Read from stdin
cat input.css | cssminify

# Preserve license comments
cssminify -p input.css

# Disable hex color shortening (keep #FF0000 instead of #F00)
cssminify --no-color-masks input.css

# Separate rules with newlines (readable output)
cssminify -r input.css

# Convert hex colors to named colors
cssminify -n input.css

# Verbose output (log plugin names)
cssminify -v input.css

# Print version
cssminify --version

Flags

ShortLongDescription
-o--outputWrite to file instead of stdout
-l--levelOptimization level: 1 (safe normalizations) or 2 (structural, default)
-p--preserve-licensesKeep /*! */ license comments
-n--color-namesConvert hex colors to named colors
-m / -/m--color-masks / --no-color-masksEnable/disable hex color shortening
-r--readableSeparate rules with newlines
-v--verboseLog plugin names to stderr
--versionPrint version and exit

Short flags with values can use =, fused, or space-separated syntax: -l=2, -l2, or -l 2.

Environment

VariableDescription
CSS_MINIFIER_CACHE_MAXMax internal character-array cache entries (default 500). Increase for large stylesheets to reduce repeated string scanning during parsing.

Library

use CSS::Minifier;

# Level 2 - structural optimizations (dedup, merging, default)
my $min = CSS::Minifier.minify($css);

# Level 1 - safe normalizations only
my $min = CSS::Minifier.minify($css, :level(1));

# Preserve license comments
my $min = CSS::Minifier.minify($css, :preserve-licenses);

# Convert hex colors to named colors
my $min = CSS::Minifier.minify($css, :color-names);

# Disable hex color shortening
my $min = CSS::Minifier.minify($css, :!color-masks);

# Add custom plugins (runs after all level plugins, in append order)
# Custom plugins must implement the CSS::Minifier::Plugin role.
my $min = CSS::Minifier.minify($css, :level(2), :extra-plugins[$my-plugin]);

Optimization Levels

Level 1

Level 2 (default)

Examples

Input

h1 { color: red; }
h2 { color: red; }
h1 { margin: 0; }

Level 1 Output

h1{color:#F00}h2{color:#F00}h1{margin:0}

Level 2 Output

h1,h2{color:#F00}h1{margin:0}

AUTHOR

Sasha Abbott sashaa@disroot.org

LICENSE

This library is free software; you can redistribute it and/or modify it under CC0.