2013-03-16 17 views
6

Sto usando UglifyJS 2 per concatenare e minimizzare un gruppo di file JavaScript (non troppo, circa da 5 a 10). Questo processo viene eseguito all'interno di Node.js utilizzando le impostazioni predefinite di UglifyJS 2.Come velocizzare il processo di minificazione di UglifyJS 2?

I file sono fondamentalmente Require.js, jQuery, Backbone.js, Backbone.js Marionette, Moment.js e alcuni altri (piccoli) file helper, tutti nelle versioni non compresse (cioè di sviluppo).

Il problema è che questo processo richiede circa 10 secondi.

Se rendo invalido minification completamente di consegna

{ compress: false } 

come opzione, è molto più veloce, ma ci vuole ancora circa 2 secondi.

Domanda n. 1: È normale che UglifyJS 2 tenga quello lungo anche per alcuni file? O probabilmente sto facendo qualcosa di sbagliato?

Domanda n. 2: Come posso velocizzare questo processo, senza disattivare tutte le opzioni utili di UglifyJS 2?

+0

Non abbiamo idea delle dimensioni dei file. Ho un progetto JS che richiede circa 7-8 secondi per comprimere. Il progetto è di circa 7 file, ognuno dei quali è di circa 400-500 linee. – Adi

+0

Ho aggiornato la mia domanda, ma il tuo commento indica già che l'esecuzione di più secondi sembra essere normale per il mio scenario. Grazie :-)! –

+0

Non stai minimizzando questi file ad ogni richiesta, vero? – Mchl

risposta

7

Non è raro che i minificatori impieghino alcuni secondi per comprimere più file di grandi dimensioni. 8-12 secondi sono nel tuo caso (più librerie di grandi dimensioni).

Tuttavia, si consiglia di non comprimere queste librerie da soli. La maggior parte di loro hanno un team di sviluppatori dietro di loro che sanno davvero cosa stanno facendo, vi consiglio di scaricare le versioni minified dalla sorgente e fare così semplice come

copy *.min.js allLibraries.js 

o

cp *.min.js allLibraries.js 

Nota : Assicurati di concatenare nell'ordine corretto, questo di solito significa The main libraries -> The plugins -> Your code.

Per quanto riguarda l'accelerazione, oltre a disabilitare le funzioni interessanti come la compressione forte, non c'è molto che si possa fare.

+0

Quindi questo significa, ottenere le versioni minificate, comprimere solo i miei file usando uno strumento come Uglify JS e quindi concatenarli, giusto? –

+1

Beh, ad essere onesti, questo è ciò che faccio. Potrebbero esserci delle opinioni là fuori che dicono il contrario. – Adi

+5

Hey downvoter, vorrei aiutarmi a migliorare la mia risposta? Per favore fatemi sapere cosa ho sbagliato così posso correggerlo. – Adi

11

Se si imposta l'opzione di compressione inutilizzata su false, dovrebbe accelerare un po '. Ho ottenuto il mio da 11 secondi a 5,5 secondi con questo.

Meno di una differenza di 2 k con off.

+0

Bella scoperta, la mia è passata da 28 a 8 secondi. Rivedendo la dimensione del file è stato salvato, mi ha salvato circa 1kb (su un file di circa 1.3MB) per rimuovere il codice inutilizzato (mi sarei aspettato molto più grande). Prenderò il miglioramento della velocità 20s! – ryanm

+3

Questa dovrebbe essere la risposta accettata. Il miglioramento della velocità è enorme – woens

+0

@woens Questo dovrebbe funzionare solo caso per caso. Come in, la differenza può essere maggiore di 1kb in base al numero di librerie che è necessario includere nel progetto. – dosaki

Problemi correlati