Está en: » Artículos »

Compresor de código javascript

Compresor de código javascript


Últimamente he estado añadiendo algunas actualizaciones para las cuales he añadido varias librerías javascript. Ya que el tamaño de carga estaba aumentando considerablemente, decidí utilizar algún compresor de código.

Tras bastante rato probando algunos con resultados poco satisfactorio (no funcionaban los códigos resultantes), encontré el proyecto JSMin del señor Douglas Crockford el cual me llamó la atención. Al ver que el proyecto estaba hospedado en code.google.com, me pareció una muy buena opción, pero claro, daba el código del proyecto para varios lenguajes.

Como es normal, me decanté por php (aquí está la variante del proyecto para php).

La cuestión es que es algo engorroso tener que editar el php cada vez que querramos comprimir algún archivo, y para colmo, el ejemplo sólo muestra el código, de manera que hay que ver la fuente, copiar y pegar en un archivo para guardarlo.

Así que por estas razones, opté por crear un pequeño script php el cual permite un upload de archivo y muestra luego una ruta para su descarga.


Aquí teneis un enlace del sistema funcionando https://miguelcarmona.com/scripts_propios/js_compresor/

El script requiere un archivo (jsmin-1.1.1.php) el cual podéis descargar desde http://jsmin-php.googlecode.com/files/jsmin-1.1.1.php. Debéis descargarlo en la misma carpeta del script, o editar el require y establecer la ruta correcta

El código del archivo es:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
// Script de copia de compresión para javascript
// Derechos atribuibles a Miguel Ángel Carmona
// https://miguelcarmona.com
// Este script es software libre; Usted puede redistribuirlo y/o modificarlo
// bajo los terminos de la GNU Licencia Pública General (GNU General Public License)
// publicada por la Fundación de Software Libre (Free Software Foundation)
// versión 3 o posterior
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="es" xml:lang="es">
<head>
	<title>compresor de javascript | miguelcarmona.com</title>
	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<body>
<table cellspacing="0" cellpadding="0" border="0" width="100%">
	<tr>
		<td align="center">
			<form action="http://<?=$_SERVER['SERVER_NAME'].$_SERVER['SCRIPT_NAME']?>" method="POST" enctype="multipart/form-data">
				<table cellspacing="5" cellpadding="5" border="0" style="width: 390px;">
					<tr>
						<td align="center">
							<label for="archivo">Enviar archivo: </label>
							<input id="archivo" name="archivo" type="file" />
						</td>
					</tr>
					<tr>
						<td align="center">
							<input type="submit" value="Comprimir archivo" style="width: 100%;" />
						</td>
					</tr>
				</table>
			</form>
		</td>
	</tr>
</table>
<br />
<?php
$salida = '';
if( !empty($_FILES) )
{
	//datos del arhivo
	$nombre_archivo = $_FILES['archivo']['name'];
	$tipo_archivo = $_FILES['archivo']['type'];
	$tamano_archivo = $_FILES['archivo']['size'];
	$original = "upload/$nombre_archivo";
	$compreso = "temp/$nombre_archivo"; //nombre del archivo a escribir
	if ( $tamano_archivo > 1000000 ) { //descartamos el archivo si es superior a 1 Mb.
		$salida .= "El tamaño del archivo no es correcto.n";
		$correcto = false;
	}else{
		if ( is_uploaded_file($_FILES['archivo']['tmp_name']) &&
		move_uploaded_file( $_FILES['archivo']['tmp_name'], $original ) ){
			$correcto = true;
		}else{
			$salida .= "Ocurrió algún error al subir el fichero.n";
		}
	}
	if ( $correcto )
	{
		require 'jsmin-1.1.1.php';
		$salida_compresor = JSMin::minify(file_get_contents($original));
		$fp = fopen($compreso, "w"); //creamos el archivo y lo abrimos
		if( fputs($fp, $salida_compresor) ) $correcto = true; else $correcto = false; //comprobamos si se ha escrito correctamente
		fclose($fp);
 
		if($correcto)
		{
			$salida .= "el archivo $nombre_archivo se comprimió correctamenten";
			$compresion = filesize($original)*100/filesize($compreso);
			$compresion = explode('.', $compresion);
			$salida .= "porcentaje de compresión: $compresion[0]%n";
			$salida .= "puede verlo/descargarlo aquí: <a href="$compreso">$nombre_archivo</a>";
		}
		else
		{
			$salida .= 'error al crear el archivo';
		}
	}
}
?>
<?=$salida?>
</body>
</html>

Archivo para descargar:
https://miguelcarmona.com/wp-content/uploads/2008/10/compresor_js1.txt

Comentarios

Deje su comentario

Previsualización de comentario
  1. Anónimo dice: