Elimina espacios en blanco, elimina comentarios, combina archivos (incluidas declaraciones @import
y pequeños recursos en archivos CSS) y optimiza/acorta algunos patrones de programación comunes, 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 {}
-> eliminado
Y viene con un enorme conjunto de pruebas.
use MatthiasMullieMinify;$sourcePath = '/path/to/source/css/file.css';$minifier = new MinifyCSS($sourcePath);// incluso podemos agregar otro archivo, luego se // unirán en 1 archivo de salida$sourcePath2 = '/ruta/a/segundo/fuente/css/file.css';$minifier->add($sourcePath2);// o podemos simplemente agregue CSS $css = 'body { color: #000000; }';$minifier->add($css);// guardar el archivo minificado en el disco$minifiedPath = '/path/to/minified/css/file.css';$minifier->minify($minifiedPath);// o simplemente generar el contentecho $minifier->minify();
// solo mira el ejemplo de CSS; es exactamente lo mismo, pero con la clase JS y los archivos JS :)
Los métodos disponibles, tanto para el minificador de CSS como de JS, son:
El constructor de objetos acepta 0, 1 o múltiples rutas de archivos, o incluso contenido CSS/JS completo, que debe minimizarse. Todo CSS/JS pasado se combinará en 1 archivo minimizado.
use MatthiasMullieMinify;$minifier = new MinifyJS($ruta1, $ruta2);
Esto es más o menos equivalente al constructor.
$minificador->add($path3);$minificador->add($js);
Esto minimizará el contenido de los archivos, guardará el resultado en $path y devolverá el contenido resultante. Si se omite el parámetro $path, el resultado no se escribirá en ninguna parte.
PRECAUCIÓN: Si tiene CSS con rutas relativas (a importaciones, imágenes, ...), ¡siempre debe especificar una ruta de destino! Entonces esas rutas relativas se ajustarán de acuerdo con la nueva ruta.
$minificador->minify('/target/path.js');
Minimiza y, opcionalmente, guarda en un archivo, al igual que minify()
, pero también gzencode()
es el contenido minificado.
$minificador->gzip('/target/path.js');
El minificador de CSS incrustará automáticamente los archivos referenciados (como imágenes, fuentes, ...) en el CSS minimizado, por lo que no es necesario recuperarlos a través de múltiples conexiones.
Sin embargo, para archivos realmente grandes, probablemente sea mejor cargarlos por separado (ya que aumentaría el tiempo de carga de CSS si se incluyeran).
Este método permite establecer el tamaño máximo de los archivos para importar al CSS minimizado (en kB). El tamaño predeterminado es 5.
$minificador->setMaxImportSize(10);
El minificador de CSS incrustará automáticamente los archivos referenciados (como imágenes, fuentes, ...) en CSS minimizado, por lo que no es necesario recuperarlos a través de múltiples conexiones.
Este método permite especificar el tipo de archivos, junto con su tipo de datos:mime.
Los tipos de archivos incrustados predeterminados son gif, png, jpg, jpeg, svg, apng, avif, webp, woff y woff2.
$extensiones = array('gif' => 'datos:imagen/gif','png' => 'datos:imagen/png', );$minificador->setImportExtensions($extensiones);
Simplemente agregue una dependencia en matthiasmullie/minify
a su archivo compositor.json si usa Composer para administrar las dependencias de su proyecto:
el compositor requiere matthiasmullie/minify
Aunque se recomienda utilizar Composer, puedes incluir estos archivos como quieras.
Minify tiene licencia del MIT.