Minify is a PHP library for minification of JavaScript code and CSS stylesheets.
Install using Composer, from Packagist.org:
composer require wikimedia/minify
use Wikimedia\Minify\JavaScriptMinifier;
$input = '
/**
* @param a
* @param b
*/
function sum(a, b) {
// Add it up!
return a + b;
}
';
$output = JavaScriptMinifier::minify( $input );
// Result:
// function sum(a,b){return a+b;}use Wikimedia\Minify\CSSMin;
$input = '
.foo,
.bar {
/* comment */
prop: value;
}
';
$output = CSSMin::minify( $input );
// Result:
// .foo,.bar{prop:value}The following trade-offs were made for improved runtime performance and code simplicity. If they cause problems in real-world applications without trivial workarounds, please let us know!
- In CSS, content within quoted strings that looks like source code is sometimes minified (T37492).
- In CSS, writing a URL over multiple lines with escaped line-breaks is not supported (T287631).
- In JS, certain multibyte spaces are not supported as whitespace in source code (including U+00A0 No Break Space NBSP, U+2028 Line Separator, and U+2029 Paragraph Separator) and may produce invalid output. Note that these and other Unicode multibyte characters are fully supported in strings, identifiers, and regexes (change 1278715).
- Issue tracker: https://phabricator.wikimedia.org/tag/wikimedia-minify/
- Source code: https://gerrit.wikimedia.org/g/mediawiki/libs/Minify
- Submit patches via Gerrit: https://www.mediawiki.org/wiki/Developer_account
- To run tests:
composer update, thencomposer test
- High-level documentation: https://www.mediawiki.org/wiki/ResourceLoader/Architecture