Remove espaços em branco, remove comentários, combina arquivos (incluindo instruções @import
e pequenos ativos em arquivos CSS) e otimiza/encurta alguns padrões de programação comuns, como:
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 {}
-> removido
E vem com um enorme conjunto de testes.
use MatthiasMullieMinify;$sourcePath = '/path/to/source/css/file.css';$minifier = new MinifyCSS($sourcePath);// podemos até adicionar outro arquivo, eles serão // unidos em 1 arquivo de saída$sourcePath2 = '/path/to/second/source/css/file.css';$minifier->add($sourcePath2);// ou podemos apenas adicione CSS simples$css = 'body { color: #000000; }';$minifier->add($css);// salva o arquivo minificado no disco$minifiedPath = '/path/to/minified/css/file.css';$minifier->minify($minifiedPath);// ou apenas produza o contentecho $minifier->minify();
// basta olhar o exemplo CSS; é exatamente o mesmo, mas com a classe JS e os arquivos JS :)
Os métodos disponíveis, para minificador CSS e JS, são:
O construtor do objeto aceita 0, 1 ou vários caminhos de arquivos, ou até mesmo conteúdo CSS/JS completo, que deve ser minificado. Todo CSS/JS repassado será combinado em 1 arquivo reduzido.
use MatthiasMullieMinify;$minifier = new MinifyJS($path1, $path2);
Isso é aproximadamente equivalente ao construtor.
$minificador->add($path3);$minificador->add($js);
Isso reduzirá o conteúdo dos arquivos, salvará o resultado em $path e retornará o conteúdo resultante. Se o parâmetro $path for omitido, o resultado não será escrito em lugar nenhum.
CUIDADO: Se você possui CSS com caminhos relativos (para importações, imagens, ...), você deve sempre especificar um caminho de destino! Então esses caminhos relativos serão ajustados de acordo com o novo caminho.
$minifier->minify('/target/path.js');
Minifica e opcionalmente salva em um arquivo, assim como minify()
, mas também gzencode()
é o conteúdo minificado.
$minifier->gzip('/target/path.js');
O minificador CSS incorporará automaticamente arquivos referenciados (como imagens, fontes, ...) no CSS minificado, para que eles não precisem ser buscados em múltiplas conexões.
No entanto, para arquivos realmente grandes, provavelmente é melhor carregá-los separadamente (pois aumentaria o tempo de carregamento do CSS se fossem incluídos).
Este método permite definir o tamanho máximo dos arquivos a serem importados para o CSS minificado (em kB). O tamanho padrão é 5.
$minificador->setMaxImportSize(10);
O minificador CSS incorporará automaticamente arquivos referenciados (como imagens, fontes, ...) em CSS minificado, para que eles não precisem ser buscados em múltiplas conexões.
Este método permite que o tipo de arquivo seja especificado, junto com seu tipo data:mime.
Os tipos de arquivo incorporados padrão são gif, png, jpg, jpeg, svg, apng, avif, webp, woff e woff2.
$extensões = array('gif' => 'dados:imagem/gif','png' => 'dados:imagem/png', );$minifier->setImportExtensions($extensions);
Basta adicionar uma dependência de matthiasmullie/minify
ao seu arquivo compositor.json se você usar o Composer para gerenciar as dependências do seu projeto:
compositor requer matthiasmullie/minify
Embora seja recomendado usar o Composer, você pode incluir esses arquivos da maneira que desejar.
Minify é licenciado pelo MIT.