Qual è il miglior compressore JavaScript disponibile? Sto cercando uno strumento che:
- è facile da usare
- ha un alto tasso di compressione
- Produrre risultati finali affidabili (non confondere il codice)
Qual è il miglior compressore JavaScript disponibile? Sto cercando uno strumento che:
Risposte:
Di recente ho rilasciato UglifyJS , un compressore JavaScript scritto in JavaScript (funziona sulla piattaforma NodeJS Node.js , ma può essere facilmente modificato per funzionare su qualsiasi motore JavaScript, dal momento che non ha bisogno di alcun Node.js
interno). È molto più veloce sia di YUI Compressor che di Google Closure , comprime meglio di YUI su tutti gli script su cui l'ho testato ed è più sicuro di Closure (sa gestire "eval" o "with").
Oltre alla rimozione degli spazi bianchi, UglifyJS esegue anche le seguenti operazioni:
foo["bar"]
in foo.bar
dove possibilePS: Oh, può anche "abbellire". ;-)
Rivedere questa domanda qualche anno dopo, UglifyJS , sembra essere la migliore opzione al momento.
Come indicato di seguito, funziona sulla piattaforma NodeJS, ma può essere facilmente modificato per essere eseguito su qualsiasi motore JavaScript.
--- Vecchia risposta di seguito ---
Google ha rilasciato Closure Compiler che sembra generare i file più piccoli finora visti qui e qui
Precedentemente le varie opzioni erano le seguenti
Fondamentalmente Packer fa un lavoro migliore alla compressione iniziale, ma se hai intenzione di decomprimere i file prima di inviarli sul filo (cosa che dovresti fare) YUI Compressor ottiene la dimensione finale più piccola.
I test sono stati eseguiti sul codice jQuery a proposito.
@ daniel james menziona nel commento compressore che mostra Packer in testa alla classifica nella migliore compressione, quindi immagino ymmv
\uxxxx
per impostazione predefinita converte i caratteri non ascii nelle stringhe in valori letterali .. utilizzare ad es. --charset UTF-8
(se si è sicuri di far sapere al browser in qualche modo)
YUI Compressor è la strada da percorrere. Ha un ottimo tasso di compressione, è ben collaudato ed è in uso tra i migliori siti e, bene, personalmente consigliato da me.
L'ho usato per i miei progetti senza un singolo errore JavaScript o singhiozzo. E ha una bella documentazione.
Non ho mai usato le sue capacità di compressione CSS, ma esistono anche. La compressione CSS funziona altrettanto bene.
Nota: sebbene Dean Edwards / packer / raggiunga un tasso di compressione migliore rispetto a YUI Compressor, ho riscontrato alcuni errori JavaScript durante l'utilizzo.
npm install packer
. (= D
Uso ShrinkSafe dal progetto Dojo - è eccezionale perché utilizza effettivamente un interprete JavaScript ( Rhino ) per gestire la ricerca di simboli nel codice e comprenderne l'ambito, ecc. Che aiuta a garantire che il codice funzionerà quando esce dall'altra parte, al contrario di molti strumenti di compressione che usano regex per fare lo stesso (che non è così affidabile).
In realtà ho un'attività MSBuild in un progetto di distribuzione Web nella mia attuale soluzione di Visual Studio che esegue uno script che a sua volta esegue tutti i file JS della soluzione tramite ShrinkSafe prima della distribuzione e funziona abbastanza bene.
EDIT: A proposito, "best" è aperto al dibattito, poiché i criteri per "best" varieranno a seconda delle esigenze del progetto. Personalmente, penso che ShrinkSafe sia un buon equilibrio; per alcune persone che ritengono la dimensione più piccola == migliore, sarà insufficiente.
EDIT: Vale la pena notare che anche il compressore YUI utilizza Rhino.
Se usi Packer, vai oltre l'opzione "riduci variabili" e decomprimi il codice risultante. L'opzione base62 è valida solo se il tuo server non è in grado di inviare file compressi con gzip. Il packer con "shrink vars" consente una migliore compressione della YUI, ma può introdurre bug se hai saltato un punto e virgola da qualche parte.
base62 è fondamentalmente un gzip di un uomo povero, motivo per cui il codice gzip di base62 ed ti dà file più grandi del codice gzip di restringimento.
Nella ricerca di proiettili d'argento, ho trovato questa domanda. Per Ruby on Rails http://github.com/sstephenson/sprockets
Ecco il codice sorgente di un HttpHandler che lo fa, forse ti aiuterà
bananascript.com mi ha dato i migliori risultati.
KJScompress
http://opensource.seznam.cz/KJScompress/index.html
Kjscompress / csskompress è un insieme di due applicazioni (kjscompress a csscompress) per rimuovere spazi bianchi e commenti non significativi dai file contenenti JavaScript e CSS. Entrambe sono applicazioni da riga di comando per il sistema operativo GNU / Linux.