Sección de Artículos

Crear archivos 'min'




avatar
(Programación)
Escrito el 11-05-2016 a las 15:30

Cuando necesitamos minizar el espacio ocupado por nuestras hojas de estilos .css o de nuestros scripts .js, la opción más frecuente consiste en la eliminación de los caracteres superfluos como los saltos de línea, retornos de carro, tabuladores y la repetición de más de 2 espacios en blanco.

Si examinamos el contenido de la mayoría de páginas web, no es raro observar que muchos de los archivos javascript que cargan tienen como doble extensión 'archivo.min.js' o que las hojas de estilos también terminan con la doble extensión 'archivo.min.css'. Esta característica nos está informando que el contenido de estos archivos, ha sido optimizado para que sólo contenga el código que interesa sin utilizar caracteres que no tengan significado sintáctico, como los retornos de carro, tabuladores, etc.

En este artículo os mostraré como ayudándonos de un pequeño script php, podemos conseguir minimizar el tamaño de nuestros archivos estáticos como son las hojas de estilos o los archivos javascript.

El script se basa en cargar el contenido del archivo a procesar en un buffer, del que eliminaremos los caracteres sin interés, para posteriormente volcarlo en un nuevo archivo que tanga el mismo nombre y extensión que el original pero con '.min.' entre ambos.

mini.php

<?php
$fentrada=$_GET['f'];                      // Guardamos el nombre del archivo que se nos pasa por el método GET
$inf_fichero = new SplFileInfo($fentrada); // Creamos objeto SplFileInfo para obtener información del archivo
$fextension=$inf_fichero->getExtension();  // Obtenemos la extensión del archivo
$fnombre=$inf_fichero->getBasename(".".$fextension); // Obtenemos el nombre sin la extensión del archivo
$fsalida=$fnombre.'.min.'.$fextension;     // Creamos nombre para el archivo de salida
unset($inf_fichero);                       // Destruimos el objeto SplFileInfo que ya no hace falta
$buffer=file_get_contents($fentrada);      // Leemos el contenido del archivo
$eliminar=array("\n","\r","\t",'    ',' {','} ','; ',' ;');    // Declaremos un array con todos los caracteres que deseamos eliminar del archivo
$reemplazar=array('','','','','{','}',';',';');    // Declaremos un array con los valores de sustitución
$buffer=str_replace($eliminar,$reemplazar,$buffer); // Reemplazamos todos los caracteres por carácter vacío
file_put_contents($fsalida,$buffer);       // Guardamos los cambios en el archivo de salida

A la hora de utilizarlo, le enviaremos el nombre del archivo a minimizar a través de la url utilizando la variable 'f', como se muestra en el siguiente ejemplo:

mini.php?f=codigo.js

Como resultado obtendremos en la misma carpeta el nuevo archivo con la extensión .min., que para nuestro ejemplo daría como resultado el archivo codigo.min.js