¿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 estropea el código)
javascript
compression
Ron Harlev
fuente
fuente
Respuestas:
Recientemente lancé UglifyJS , un compresor de JavaScript que está escrito en JavaScript (se ejecuta en la plataforma NodeJS Node.js , pero se puede modificar fácilmente para que se ejecute en cualquier motor de JavaScript, ya que no necesita elementos
Node.js
internos). Es mucho más rápido que YUI Compressor y Google Closure , se comprime mejor que YUI en todos los scripts en los que lo probé, y es más seguro que Closure (sabe tratar con "eval" o "with").Además de la eliminación de espacios en blanco, UglifyJS también hace lo siguiente:
foo["bar"]
enfoo.bar
donde sea posiblePD: Oh, también puede "embellecer". ;-)
fuente
Revisar esta pregunta unos años después, UglifyJS , parece ser la mejor opción a partir de ahora.
Como se indica a continuación, se ejecuta en la plataforma NodeJS, pero puede modificarse fácilmente para ejecutarse en cualquier motor de JavaScript.
--- Antigua respuesta a continuación ---
Google lanzó Closure Compiler que parece estar generando los archivos más pequeños hasta ahora, como se ve aquí y aquí
Antes de eso, las diferentes opciones eran las siguientes
Básicamente, Packer hace un mejor trabajo en la compresión inicial, pero si va a comprimir los archivos antes de enviarlos por cable (que debería estar haciendo), YUI Compressor obtiene el tamaño final más pequeño.
Las pruebas se realizaron en código jQuery por cierto.
@ daniel james menciona en el comentario compresor que muestra a Packer liderando la tabla en la mejor compresión, así que supongo que mmm
fuente
\uxxxx
literales de forma predeterminada ... use, por ejemplo,--charset UTF-8
(si está seguro de que le informa al navegador de alguna manera)El compresor YUI es el camino a seguir. Tiene una gran tasa de compresión, está bien probado y está en uso entre muchos sitios principales y, bueno, personalmente lo recomendé.
Lo he usado para mis proyectos sin un solo error de JavaScript o hipo. 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's / packer / logra una mejor tasa de compresión que YUI Compressor, me encontré con algunos errores de JavaScript cuando lo usé.
fuente
npm install packer
. (= DUso ShrinkSafe del proyecto Dojo : es excepcional porque en realidad usa un intérprete de JavaScript ( Rhino ) para tratar de encontrar símbolos en el código y comprender su alcance, etc., lo que ayuda a garantizar que el código funcione cuando salga otro extremo, a diferencia de muchas herramientas de compresión que usan expresiones regulares para hacer lo mismo (que 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 implementar 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 usa Rhino.
fuente
Pruebe JSMin , obtuvo C #, Java, C y otros puertos y también está disponible.
fuente
Si usa Packer, simplemente vaya lejos a la opción 'reducir variables' y gzip el código resultante. La opción base62 es solo para si su servidor no puede enviar archivos comprimidos. Packer con 'retráctil vars' logra una mejor compresión de la YUI, pero puede introducir errores si ha omitido un punto y coma en alguna parte.
base62 es básicamente el gzip de un hombre pobre, razón por la cual el código gzipping de base62-ed le proporciona archivos más grandes que el código gzipping shrink-var-ed.
fuente
JSMin es otro.
fuente
fuente
Aquí está el código fuente de un HttpHandler que hace eso, tal vez te ayude
fuente
Aquí hay un script de compresor YUI ( Byuic ) que encuentra todos los js y css en una ruta y los comprime / (opcionalmente) los ofusca. Agradable de integrar en un proceso de construcción.
fuente
bananascript.com solía darme los mejores resultados.
fuente
KJScompress
http://opensource.seznam.cz/KJScompress/index.html
fuente
Js Crush es un buen compresor para usar después de haber minimizado.
fuente