Herramienta Minify que se puede ejecutar a través de terminal

35

Busco a una herramienta o una manera de Minify (similar a Comprimir mi código y esta cuestión en la pila) todo el código en mis .xml, .css, .htmly .jsarchivos a través de Ubuntu terminal. Eventualmente, ejecutaré el proceso de script, pero por el momento me gustaría encontrar algo para probar. ¿Existe alguna herramienta que pueda usar para comprimir todos estos formatos de archivo a través del terminal?

DᴀʀᴛʜVᴀᴅᴇʀ
fuente
2
¿Has probado algo como tar -czvf compressed.tar.gz *.xml *.css *.html *.php?
roadmr
1
Estoy buscando comprimir el código en sí. Algo así como CSS Minify
DᴀʀᴛʜVᴀᴅᴇʀ
1
Entonces creo que no estás pidiendo compresión . Al comprimir en archivos normales (que no son medios como música / videos) en su mayoría solo consideramos la compresión sin pérdidas, pero está buscando una manera de minimizar el espacio en blanco (en el que pierde estos datos). Y debido a que la minificación es con pérdida, no se puede descomprimir (porque no es reversible). Para mí esto hace que "no esté claro lo que estás preguntando".
gertvdijk

Respuestas:

43

Esta no es la mejor opción, pero probablemente sea la más fácil. Durante mucho tiempo se pensó que el compresor YUI era el mejor compresor para Javascript y CSS, ofreciendo mejoras del 20-40% sobre otros minificadores.

Desde entonces, ha sido reemplazado por proyectos más nuevos como Uglify.JS (que Grunt probablemente sugerirá), pero sigue siendo bastante fácil de poner en marcha en Ubuntu.

sudo apt-get install yui-compressor

Eso es. Ahora puedes correr yui-compressor myfile.jsy hará su magia, solo que no tan bien o tan convenientemente como instalar una pila Node / Grunt / Uglify + YUI correctamente.

Oli
fuente
15
No todos los que usan js o css usan node.js o realizan proyectos node.js. Es otro marco para aprender y configurar si desea utilizar Grunt. Sí, gruñido es genial. Pero hoy en día, ya tenemos suficiente para aprender antes de que podamos comenzar a codificar. Entonces nodo / gruñido no siempre es conveniente. :) Yo mismo voy a probar tu sugerencia de yui-compressor.
Bill Rosmus
2
@BillR Estoy de acuerdo con el sentimiento, pero aunque no tengo ningún proyecto node.js, todavía uso cosas como lessc y uglify.js porque son las mejores herramientas para el trabajo . No uso Grunt porque lo he reemplazado con mis propias herramientas, pero para el trabajo real, nunca cojearía solo para evitar Node. Si desea permanecer en la industria, debe mantenerse al día con las mejores prácticas.
Oli
Está asumiendo que usar nodo es la mejor práctica. Quizás en tu mundo que no es el mundo de todos.
Bill Rosmus
2
Tienes cinco años para mí pero no sé cuál es tu punto ... ¿Sigues usando HTML4 estático con un poco de "DHTML" y scripts CGI perl? ¿Sigues usando ASP? ¿O ha cambiado las cosas a medida que se han puesto a disposición mejores tecnologías? Tenemos dos puntos separados en esto; Se está volviendo un poco tonto. No me importa si no te gusta el reentrenamiento, pero me importa que estés entendiendo que usar el more-csspaquete NPM para minimizar tu CSS es más intrusivo que usar yui-compressor. No lo es Es solo otro comando que hace lo mismo mejor.
Oli
1
Tenga en cuenta que con esta instalación también instalará openjkd, algo que alguien no querría en el sistema.
realmente agradable
12

Puede minificar js fácilmente con node y uglify-js desde la línea de comandos:

  • instalar uglify-js con npm install uglify-js -g

  • ejecutarlo uglifyjs app-test.js > app-test.min.js


Para css sugeriría el uso de ejemplo clean-css (probablemente el minificador css más estable en npm)
:

cleancss -o public-min.css public.css

En lo que respecta a html, por lo general, la minificación no vale el tiempo que invierte en configurarlo, pero he intentado html-minifier y es una herramienta increíble.

Hagas lo que hagas, solo asegúrate de comprimir lo que estás sirviendo.

usuario2417031
fuente
1
uglify se puede instalar directamente consudo apt-get install node-uglify
Gery
Tenga en cuenta que uglify-js es solo para Javascript, y no para css u otros archivos.
Jose Gómez
2
@Gery si quieres instalar uglifycon apt, también necesitas instalar node-legacy, así que ejecutasudo apt install node-uglify node-legacy
mxdsp
Tenga en cuenta que la cleancssherramienta CLI ahora está en el clean-css-clipaquete.
jbg
7

Use minify : a diferencia de las otras sugerencias, esta herramienta minimiza muchos más tipos de archivos:

CSS     text/css
HTM     text/html
HTML    text/html
JS      text/javascript
JSON    application/json
SVG     image/svg+xml
XML     text/xml
Dennis
fuente
Hace un trabajo muy pobre con javascript.
Federico
2

No hay ninguna razón para minificar archivos php (excepto que tiene un espacio en disco muy limitado y quiere usar cada bit).

Si pudiera agregar una meta (¿Qué quiere lograr y por qué?), Alguien podría mostrarle una mejor manera.

Los archivos JS y CSS se minimizan en tiempo de ejecución y se almacenan en caché en la mayoría de los proyectos web. Hay minify ( https://github.com/mrclay/minify ), una "biblioteca" de php que puede hacer exactamente esto. (también se puede ejecutar con php desde la terminal)

Pero tenga en cuenta que un gran archivo javascript no necesariamente se carga más rápido que 5 archivos pequeños. Si necesita una razón y una solución para esta declaración, eche un vistazo a http://headjs.com/

Que la fuente te acompañe...

mondjunge
fuente
1

Recomendaría usar Grunt.js . Es una herramienta de automatización que tiene minificadores disponibles como complementos y se puede ejecutar en su terminal a través de Node.js. No debería ser necesario minimizar PHP ya que el código se ejecuta en el lado del servidor y solo su salida HTML se envía al cliente.

Puedes encontrar los complementos disponibles aquí

konapun
fuente
2
Tenga en cuenta que elegir Grunt implica una curva de aprendizaje.
Rick-777
1

He tenido buenos resultados con Closure Compiler .

Closure Compiler es una herramienta para hacer que JavaScript se descargue y se ejecute más rápido. En lugar de compilar desde un lenguaje fuente a código de máquina, compila desde JavaScript para mejorar JavaScript. Analiza tu JavaScript, lo analiza, elimina el código muerto y reescribe y minimiza lo que queda. También verifica la sintaxis, las referencias de variables y los tipos, y advierte sobre los errores comunes de JavaScript.

Está desarrollado por Google y escrito en Java. Está empaquetado para sistemas basados ​​en Debian closure-compilery se instala fácilmente en sistemas Ubuntu. Como no usa una GUI, requiere un default-jre-headlesspaquete más liviano .

Es más lento que el compresor YUI, pero el tamaño del archivo resultante es (ligeramente) más pequeño. También imprime mensajes de advertencia útiles, similares a los compiladores para otros lenguajes de programación.

Documentación: Comenzando

Uso:

closure-compiler --js input.js --js_output_file output.js
Anthony G - justicia para Monica
fuente
El cierre es realmente bueno si comienza su proyecto con él y extiende sus objetos en archivos separados, etc. Pero para un proyecto existente, es bastante terrible.
Alexis Wilke
-1

Otra opción es usar el npxcomando de Node.js. npxejecuta un comando de un paquete Node.js sin instalarlo explícitamente.

# Minify JS
npx -p uglify-js uglifyjs -o app.min.js app.js common.js

# Minify CSS
npx clean-css-cli -o style.min.css css/bootstrap.css style.css

# Minify HTML
npx html-minifier index-2.html -o index.html --remove-comments --collapse-whitespace

# XML
npx pretty-data-cli --type xml --minify input.xml > input.min.xml
Ninh Pham
fuente