Combinar y reducir JavaScript

·

En muchas ocasiones me encuentro que tengo varios JavaScript en una página y, al final, se hace bastante pesado tener que gestionar múltiples ficheros. Además, otra cosa que me gusta es la de reducir al máximo el tamaño del fichero, y el hecho de poder combinarlos también permite reducirlos…

Es por esto que existe para PHP una pequeña biblioteca de funciones llamada JSmin-php que ayuda a gestionar esta situación tanto la de combinar como de minimizar.

Básicamente lo que hace esta biblioteca es leer todos los ficheros JS de una carpeta, combinarlos, comprimirlos y generar un fichero único cacheado.

require_once("jsmin.php");
$files = glob("/carpeta/js/*.js");
$js = "";
foreach($files as $file) {
  $js .= JSMin::minify(file_get_contents($file));
}
file_put_contents("/carpeta/combinado.js", $js);

En el caso en que no queramos leer todos los ficheros de una carpeta y sólo incluior unos pocos, podemos cambiar la línea por algo al que así:

$files = array("/carpeta/js/1.js", "/carpeta/js/2.js", "/carpeta/js/3.js");

De esta forma generaremos un único fichero. Personalmente creo que esto habría que ejecutarlo una vez de forma externa, y usar el fichero generado a mano… a menos que montemos un sistema que verifique las cachés o que permita cambiar este fichero sin que ocurra nada… que luego ya se sabe, cambios de versiones, etc.

Comments

2 respuestas a «Combinar y reducir JavaScript»

  1. Avatar de david bello

    hola probe la herramienta y parece buena la biblioteca y comprime bien pero no me parece que el servidor ejecute ese tipo de peticiones , yo prefiero comprimir el javascript y anexarlo al proyecto , yo uso yui compresor que por cierto comprime un poco mas que el jsmin-php aqui les dejo un link para comprimir online no lo he probado les recomiendo que se bajen el java de la web oficial

  2. Avatar de ventura

    Hola:

    Estoy buscando algún plugin para WordPress para minificar los javascript. ¿Podrías recomendarme alguno?

    Saludos.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *