intelogie/minify

CSS & JS 压缩器

1.3.42 2016-11-23 10:16 UTC

README

Build status Code coverage Code quality Latest version Downloads total License

用法

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 :)

方法

可用的方法,适用于CSS和JS压缩器,包括:

__construct(/* 路径重载 */)

对象构造函数接受0个、1个或多个文件路径,或者甚至完整的CSS/JS内容,这些内容需要被压缩。所有传递的CSS/JS将被合并成1个压缩文件。

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

add($path, /* 路径重载 */)

这大致等同于构造函数。

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

minify($path)

这将压缩文件内容,将结果保存到$path,并返回结果内容。如果省略$path参数,则结果不会写入任何地方。

注意:如果您有包含相对路径(到导入、图像等)的CSS,您应该始终指定目标路径!然后这些相对路径将根据新路径进行调整。

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

gzip($path, $level)

与minify()类似,压缩并可选地保存到文件,但它还使用gzencode()对压缩内容进行编码。

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

setMaxImportSize($size) (仅CSS)

CSS压缩器会自动将引用的文件(如图像、字体等)嵌入到压缩的CSS中,这样就不必通过多个连接获取。

但是,对于非常大的文件,最好单独加载它们(因为如果包含在内,这将增加CSS的加载时间。)

此方法允许设置导入到压缩CSS中的文件的最大大小(以KB为单位)。默认大小为5。

$minifier->setMaxImportSize(10);

setImportExtensions($extensions) (仅CSS)

CSS压缩器会自动将引用的文件(如图像、字体等)嵌入到压缩CSS中,这样就不必通过多个连接获取。

此方法允许指定文件类型及其数据:mime类型。

默认嵌入的文件类型是gif、png、jpg、jpeg、svg & woff。

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

$minifier->setImportExtensions($extensions);

安装

如果您使用Composer来管理项目的依赖项,只需将matthiasmullie/minify作为依赖项添加到您的composer.json文件中即可

composer require matthiasmullie/minify

尽管建议使用Composer,但实际上您可以根据需要包含这些文件

试试看

只需在http://www.minifier.org上在线尝试即可。

许可证

Minify遵循MIT许可证。

挑战

如果您对了解我在构建此项目过程中遇到的一些更难的技术挑战感兴趣,您可能想看看我在我的博客上写的关于它的一些内容