1
0
Fork
You've already forked minify
0
CSS & JavaScript minifier, in PHP. Removes whitespace, strips comments, combines files (incl. @import statements and small assets in CSS files), and optimizes/shortens a few common programming patterns.
  • PHP 86.5%
  • JavaScript 11.8%
  • CSS 0.8%
  • Makefile 0.6%
  • Dockerfile 0.3%
Find a file
2024年02月27日 00:05:39 +00:00
.github Fix healthcheck ping 2023年07月01日 19:54:28 +02:00
bin Cleanup bin scripts 2015年02月12日 13:49:54 +01:00
data/js Fix newline trimming around tilde 2017年07月06日 14:26:44 +02:00
src Reformat 2023年06月30日 14:46:15 +02:00
tests Reformat 2023年06月30日 14:46:15 +02:00
.dockerignore Add .dockerignore 2022年11月18日 13:22:46 +01:00
.gitattributes Update formatting config 2022年11月18日 16:43:18 +01:00
.gitignore Add .dockerignore 2022年11月18日 13:22:46 +01:00
.php-cs-fixer.php Update formatting config 2022年11月18日 16:43:18 +01:00
composer.json Update composer.json 2024年02月27日 00:05:39 +00:00
CONTRIBUTING.md Update formatting config 2022年11月18日 16:43:18 +01:00
Dockerfile Fix PHP 5.5 tests 2023年04月25日 22:33:03 +02:00
LICENSE Fix violations according to SensioLabsInsight 2015年09月08日 10:46:06 +02:00
makefile Make volumes configurable 2023年06月30日 14:45:56 +02:00
phpunit.xml Migrate phpunit config 2023年06月30日 14:46:07 +02:00
README.md Update README.md 2022年12月20日 14:47:16 +01:00
ruleset.xml Update formatting config 2022年11月18日 16:43:18 +01:00

Minify

Build status Code coverage Latest version Downloads total License

Removes whitespace, strips comments, combines files (incl. @import statements and small assets in CSS files), and optimizes/shortens a few common programming patterns, such as:

JavaScript

  • object['property'] -> object.property
  • true, false -> !0, !1
  • while(true) -> for(;;)

CSS

  • @import url("http://path") -> @import "http://path"
  • #ff0000, #ff00ff -> red, #f0f
  • -0px, 50.00px -> 0, 50px
  • bold -> 700
  • p {} -> removed

And it comes with a huge test suite.

Usage

CSS

use MatthiasMullie\Minify;
$sourcePath = '/path/to/source/css/file.css';
$minifier = new Minify\CSS($sourcePath);
// we can even add another file, they'll then be
// joined in 1 output file
$sourcePath2 = '/path/to/second/source/css/file.css';
$minifier->add($sourcePath2);
// or we can just add plain CSS
$css = 'body { color: #000000; }';
$minifier->add($css);
// save minified file to disk
$minifiedPath = '/path/to/minified/css/file.css';
$minifier->minify($minifiedPath);
// or just output the content
echo $minifier->minify();

JS

// just look at the CSS example; it's exactly the same, but with the JS class & JS files :)

Methods

Available methods, for both CSS & JS minifier, are:

__construct(/* overload paths */)

The object constructor accepts 0, 1 or multiple paths of files, or even complete CSS/JS content, that should be minified. All CSS/JS passed along, will be combined into 1 minified file.

use MatthiasMullie\Minify;
$minifier = new Minify\JS($path1, $path2);

add($path, /* overload paths */)

This is roughly equivalent to the constructor.

$minifier->add($path3);
$minifier->add($js);

minify($path)

This will minify the files' content, save the result to $path and return the resulting content. If the $path parameter is omitted, the result will not be written anywhere.

CAUTION: If you have CSS with relative paths (to imports, images, ...), you should always specify a target path! Then those relative paths will be adjusted in accordance with the new path.

$minifier->minify('/target/path.js');

gzip($path, $level)

Minifies and optionally saves to a file, just like minify(), but it also gzencode()s the minified content.

$minifier->gzip('/target/path.js');

setMaxImportSize($size) (CSS only)

The CSS minifier will automatically embed referenced files (like images, fonts, ...) into the minified CSS, so they don't have to be fetched over multiple connections.

However, for really large files, it's likely better to load them separately (as it would increase the CSS load time if they were included.)

This method allows the max size of files to import into the minified CSS to be set (in kB). The default size is 5.

$minifier->setMaxImportSize(10);

setImportExtensions($extensions) (CSS only)

The CSS minifier will automatically embed referenced files (like images, fonts, ...) into minified CSS, so they don't have to be fetched over multiple connections.

This methods allows the type of files to be specified, along with their data:mime type.

The default embedded file types are gif, png, jpg, jpeg, svg, apng, avif, webp, woff and woff2.

$extensions = array(
 'gif' => 'data:image/gif',
 'png' => 'data:image/png',
);
$minifier->setImportExtensions($extensions);

Installation

Simply add a dependency on matthiasmullie/minify to your composer.json file if you use Composer to manage the dependencies of your project:

composer require matthiasmullie/minify

Although it's recommended to use Composer, you can actually include these files anyway you want.

License

Minify is MIT licensed.