Strumento di minimizzazione che può essere eseguito tramite il terminale


35

Sto cercando uno strumento o un modo per minify (simile a comprimere il mio codice e questo domanda su Stack) tutto il codice nei miei .xml, .css, .htmle .jsfile tramite Ubuntu del terminale. Alla fine basterò il copione del processo, ma al momento vorrei solo trovare qualcosa da testare. Esiste uno strumento là fuori che posso usare per comprimere tutti questi formati di file attraverso il terminale?


2
Hai provato qualcosa del genere tar -czvf compressed.tar.gz *.xml *.css *.html *.php?
Roadmr,

1
Sto cercando di comprimere il codice stesso. Qualcosa come CSS Minify
DᴀʀᴛʜVᴀᴅᴇʀ

1
Quindi penso che non stai chiedendo la compressione . Tramite la compressione su file regolari (non multimediali come musica / video) consideriamo principalmente la compressione senza perdita di dati, ma stai cercando un modo per ridurre al minimo lo spazio bianco (in cui perdi questi dati). E poiché la minimizzazione è in perdita, non è possibile decomprimere (perché non è reversibile). Per me questo rende "poco chiaro ciò che stai chiedendo".
gertvdijk,

Risposte:


43

Questa non è l' opzione migliore ma è probabilmente la più semplice. Il compressore YUI è stato a lungo ritenuto il miglior compressore per Javascript e CSS, offrendo miglioramenti del 20-40% rispetto ad altri minificatori.

Da allora è stato sostituito da progetti più recenti come Uglify.JS (che probabilmente suggerirà Grunt), ma è comunque una cosa abbastanza semplice iniziare a funzionare su Ubuntu.

sudo apt-get install yui-compressor

Questo è tutto. Ora puoi correre yui-compressor myfile.jse farà la sua magia, ma non altrettanto bene, o comodamente come uno stack Node / Grunt / Uglify + YUI correttamente installato.


15
Non tutti quelli che usano js o css usano node.js o fanno progetti node.js. È ancora un altro framework per imparare e configurare se si desidera utilizzare Grunt. Sì, il grugnito è bello. Ma adesso, abbiamo già abbastanza da imparare prima ancora di poter iniziare a scrivere codice. Quindi il nodo / grugnito non è sempre conveniente. :) Io stesso proverò il tuo suggerimento di yui-compressore.
Bill Rosmus,

2
@BillR Sono in qualche modo d'accordo con il sentimento ma anche se non ho progetti node.js, uso ancora cose come lessc e uglify.js perché sono gli strumenti migliori per il lavoro . Non uso Grunt perché l'ho sostituito con i miei strumenti, ma per il lavoro reale, non mi sarei mai ostacolato solo per evitare Node. Se vuoi rimanere nel settore, devi tenere il passo con le migliori pratiche.
Oli

Stai assumendo che l'utilizzo del nodo sia la migliore pratica. Forse nel tuo mondo che non è il mondo di tutti.
Bill Rosmus,

2
Hai cinque anni con me, ma non so quale sia il tuo punto ... Stai ancora usando HTML4 statico con un po 'di script "DHTML" e perl CGI? Stai ancora usando ASP? O hai cambiato le cose man mano che tecnologie migliori si sono rese disponibili? Abbiamo due punti separati in corso in questo; sta diventando un po 'sciocco. Non mi interessa se non ti piace la riqualificazione, ma mi interessa che tu stia scoprendo che l'uso del more-csspacchetto NPM per minimizzare il tuo CSS è più invadente dell'uso di yui-compressore. Non lo è. È solo un altro comando che fa la stessa cosa meglio.
Oli

1
Nota che con questa installazione installerai anche openjkd, una cosa che qualcuno non vorrebbe nel sistema.
reallynice

12

Puoi minimizzare facilmente js con node e uglify-js dalla riga di comando:

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

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


Per css suggerirei un
esempio di utilizzo di clean-css (probabilmente il più stabile css css su npm) :

cleancss -o public-min.css public.css

Per quanto riguarda l'html, di solito non vale la pena minimizzare il tempo che investi nella configurazione, ma ho provato html-minifier ed è uno strumento fantastico.

Qualunque cosa tu faccia, assicurati di decomprimere ciò che stai servendo.


1
uglify può essere installato direttamente consudo apt-get install node-uglify
Gery

Si noti che uglify-js è solo per Javascript e non per CSS o altri file.
Jose Gómez,

2
@Gery se si desidera installare uglifycon aptè necessario installare anche node-legacy, quindi eseguiresudo apt install node-uglify node-legacy
mxdsp

Si noti che lo cleancssstrumento CLI è ora nel clean-css-clipacchetto.
jbg

7

Usa minify - a differenza degli altri suggerimenti, questo strumento minimizza molti più tipi di file:

CSS     text/css
HTM     text/html
HTML    text/html
JS      text/javascript
JSON    application/json
SVG     image/svg+xml
XML     text/xml

Fa un pessimo lavoro con javascript.
Federico

2

Non vi è alcun motivo per minimizzare i file php (tranne per il fatto che lo spazio su disco è molto limitato e si desidera utilizzarne ogni bit).

Se potessi aggiungere un obiettivo (cosa vuoi raggiungere e perché?), Qualcuno potrebbe mostrarti un modo migliore.

I file JS e CSS vengono minimizzati in fase di runtime e memorizzati nella cache nella maggior parte dei progetti web. C'è minify ( https://github.com/mrclay/minify ), una "libreria" php che è in grado di fare esattamente questo. (può anche essere eseguito con php dal terminale)

Ma tieni presente che un grande file javascript non deve essere caricato più velocemente di 5 piccoli file. Se hai bisogno di un motivo e una soluzione per questa affermazione, dai un'occhiata a http://headjs.com/

Possa la fonte essere con te ...


1

Consiglierei di usare Grunt.js . È uno strumento di automazione che ha i minificatori disponibili come plug-in e può essere eseguito nel terminale tramite Node.js. Non dovrebbe essere necessario minimizzare PHP mentre il codice viene eseguito sul lato server e solo il suo output HTML viene inviato al client.

Puoi trovare i plugin disponibili qui


2
Tieni presente che la scelta di Grunt implica una curva di apprendimento.
Rick-777,

1

Ho avuto buoni risultati con Closure Compiler .

Il compilatore di chiusura è uno strumento per eseguire download e l'esecuzione di JavaScript più velocemente. Invece di compilare da una lingua di origine al codice macchina, compila da JavaScript a JavaScript migliore. Analizza il tuo JavaScript, lo analizza, rimuove il codice morto e riscrive e minimizza ciò che rimane. Controlla anche la sintassi, i riferimenti alle variabili e i tipi e avverte di insidie ​​JavaScript comuni.

È sviluppato da Google e scritto in Java. È impacchettato per sistemi basati su Debian comeclosure-compiler è facilmente installabile su sistemi Ubuntu. Poiché non utilizza una GUI, richiede un default-jre-headlesspacchetto più leggero .

È più lento quel compressore YUI ma la dimensione del file risultante è (leggermente) più piccola. Stampa anche utili messaggi di avviso, simili ai compilatori per altri linguaggi di programmazione.

Documentazione: per iniziare

Uso:

closure-compiler --js input.js --js_output_file output.js

La chiusura è davvero buona se inizi il tuo progetto con esso ed estendi i tuoi oggetti in file separati, ecc. Ma per un progetto esistente, è piuttosto terribile.
Alexis Wilke,

-1

Un'altra opzione è utilizzare il npxcomando da Node.js. npxesegue un comando di un pacchetto Node.js senza installarlo esplicitamente.

# 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
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.