Pregunta

¿Cuál es el mejor compresor de JavaScript disponible?Estoy buscando una herramienta que:

  • es fácil de usar
  • tiene una alta tasa de compresión
  • Produzca resultados finales confiables (no estropee el código)
¿Fue útil?

Solución

Recientemente lancé UglifyJS, un compresor de JavaScript que está escrito en JavaScript (se ejecuta en NodeJS Nodo.js plataforma, pero se puede modificar fácilmente para ejecutarse en cualquier motor JavaScript, ya que no necesita ningún Node.js internos).Es mucho más rápido que ambos. Compresor YUI y Cierre de Google, se comprime mejor que Yui en todos los scripts en los que lo probé y es más seguro que el cierre (sabe lidiar con "eval" o "with").

Además de eliminar espacios en blanco, UglifyJS también hace lo siguiente:

  • cambia los nombres de las variables locales (normalmente a caracteres individuales)
  • une declaraciones var consecutivas
  • evita insertar corchetes, paréntesis y punto y coma innecesarios
  • optimiza los IF (elimina "else" cuando detecta que no es necesario, transforma los IF en &&, || o ?/:operadores cuando sea posible, etc.).
  • transforma foo["bar"] en foo.bar donde sea posible
  • elimina las comillas de las claves en los literales de objetos, cuando sea posible
  • resuelve expresiones simples cuando esto conduce a un código más pequeño (1+3*4 ==> 13)

PD:Oh, también puede "embellecer".;-)

Otros consejos

Revisando esta pregunta unos años más tarde, UglifyJS, parece ser la mejor opción a partir de ahora.

Como se indica a continuación, se ejecuta en la plataforma NodeJS, pero se puede modificar fácilmente para ejecutarse en cualquier motor JavaScript.

--- Antigua respuesta a continuación---

Google lanzado Compilador de cierre que parece estar generando los archivos más pequeños hasta ahora vistos aquí y aquí

Antes de eso, las diversas opciones. fueron los siguientes

Básicamente Envasador hace un mejor trabajo en la compresión inicial, pero si va a comprimir los archivos antes de enviarlos por cable (lo que debería hacer) Compresor YUI obtiene el tamaño final más pequeño.

Las pruebas se realizaron en código jQuery por cierto.

  • Biblioteca jQuery original 62.885 bytes, 19.758 bytes después de gzip
  • jQuery minificado con JSMin 36.391 bytes, 11.541 bytes después de gzip
  • jQuery minificado con Packer 21.557 bytes, 11.119 bytes después de gzip
  • jQuery minificado con el compresor YUI 31.822 bytes, 10.818 bytes después de gzip

@daniel james menciona en el comentario compresor que muestra a Packer liderando el gráfico con la mejor compresión, así que supongo ymmv

Compresor YUI es el camino a seguir.Tiene una excelente tasa de compresión, está bien probado y se utiliza en muchos de los mejores sitios y, bueno, lo recomiendo personalmente.

Lo he usado para mis proyectos sin un solo error o contratiempo de JavaScript.Y tiene buena documentación.

Nunca he usado sus capacidades de compresión CSS, pero también existen. La compresión CSS funciona igual de bien.

Nota:Aunque Dean Edwards /envasador/ logra una mejor tasa de compresión que YUI Compressor, encontré algunos errores de JavaScript al usarlo.

yo suelo ShrinkSafe del proyecto Dojo - es excepcional porque en realidad utiliza un intérprete de JavaScript (Rinoceronte) para tratar de encontrar símbolos en el código y comprender su alcance, etc.lo que ayuda a garantizar que el código funcionará cuando salga por el otro extremo, a diferencia de muchas herramientas de compresión que usan expresiones regulares para hacer lo mismo (lo cual no es tan confiable).

De hecho, tengo una tarea de MSBuild en un Proyecto de implementación web en mi solución actual de Visual Studio que ejecuta un script que a su vez ejecuta todos los archivos JS de la solución a través de ShrinkSafe antes de implementarlo y funciona bastante bien.

EDITAR: Por cierto, "mejor" está abierto a debate, ya que los criterios para "mejor" variarán según las necesidades del proyecto.Personalmente, creo que ShrinkSafe es un buen equilibrio;Para algunas personas que piensan que el tamaño más pequeño == mejor, será insuficiente.

EDITAR: Vale la pena señalar que el compresor YUI también utiliza Rhino.

Intentar JSMin, obtuvo C#, Java, C y otros puertos y también está disponible.

Si usa Packer, simplemente vaya a la opción 'reducir variables' y comprima el código resultante.La opción base62 es solo si su servidor no puede enviar archivos comprimidos con gzip.El empaquetador con 'shrink vars' logra una mejor compresión de YUI, pero puede introducir errores si se ha saltado un punto y coma en alguna parte.

base62 es básicamente un gzip de hombre pobre, por lo que comprimir el código base62-ed proporciona archivos más grandes que comprimir el código var-ed.

JSMin es otro.

Al buscar en la bala de plata, encontró esta pregunta.Para Ruby sobre rieles http://github.com/sstephenson/sprockets

Aquí está el código fuente de un HttpHandler que hace eso, tal vez te ayude

Aquí es un script de compresor YUI (Byuic) que encuentra todos los js y css en una ruta y los comprime /(opcionalmente) los ofusca.Es bueno integrarlo en un proceso de construcción.

bananascript.com solía darme mejores resultados.

KJScomprimir

http://opensource.seznam.cz/KJScompress/index.html

KJSCOMPRESS/CSSKOMPRESS está establecido de dos aplicaciones (KJSCOMPress A CSSCOMPress) para eliminar los espacios en blanco y comentarios no significativos de los archivos que contienen JavaScript y CSS.Ambas son aplicaciones de línea de comandos para el sistema operativo GNU/Linux.

Js Crush Es un buen compresor para usar después de haber minimizado.

yo suelo jscompressor.com como una aplicación de Chrome.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top