mirror of
https://github.com/matthiasmullie/minify.git
synced 2025-02-22 22:43:32 +01:00
141 lines
4.3 KiB
Markdown
141 lines
4.3 KiB
Markdown
# Minify
|
|
|
|
[](https://travis-ci.org/matthiasmullie/minify)
|
|
[](https://codecov.io/github/matthiasmullie/minify)
|
|
[](https://scrutinizer-ci.com/g/matthiasmullie/minify)
|
|
[](https://packagist.org/packages/matthiasmullie/minify)
|
|
[](https://packagist.org/packages/matthiasmullie/minify)
|
|
[](https://github.com/matthiasmullie/minify/blob/master/LICENSE)
|
|
|
|
|
|
## Usage
|
|
|
|
### CSS
|
|
|
|
```php
|
|
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
|
|
|
|
```php
|
|
// 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.
|
|
|
|
```php
|
|
use MatthiasMullie\Minify;
|
|
$minifier = new Minify\JS($path1, $path2);
|
|
```
|
|
|
|
### add($path, /* overload paths */)
|
|
|
|
This is roughly equivalent to the constructor.
|
|
|
|
```php
|
|
$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.*
|
|
|
|
```php
|
|
$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.
|
|
|
|
```php
|
|
$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.
|
|
|
|
```php
|
|
$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 & woff.
|
|
|
|
```php
|
|
$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](https://getcomposer.org/) to manage the dependencies of your project:
|
|
|
|
```sh
|
|
composer require matthiasmullie/minify
|
|
```
|
|
|
|
Although it's recommended to use Composer, you can actually [include these files](https://github.com/matthiasmullie/minify/issues/83) anyway you want.
|
|
|
|
|
|
## Try it
|
|
|
|
Simply try it out online at <http://www.minifier.org>.
|
|
|
|
|
|
## License
|
|
|
|
Minify is [MIT](http://opensource.org/licenses/MIT) licensed.
|
|
|
|
|
|
## Challenges
|
|
|
|
If you're interested in learning some of the harder technical challenges I've encountered building this, you probably want to take a look at [what I wrote about it](http://www.mullie.eu/dont-build-your-own-minifier/) on my blog.
|