2013-03-16 9 views
6

Używam UglifyJS 2 do łączenia i minimalizowania wielu plików JavaScript (nie za dużo, od 5 do 10). Ten proces jest uruchamiany z poziomu Node.js przy użyciu domyślnych ustawień UglifyJS 2.Jak przyspieszyć proces minimalizacji UglifyJS 2?

Pliki są w zasadzie Require.js, jQuery, Backbone.js, Backbone.js Marionette, Moment.js i niektóre dodatkowe (mniejsze) pliki pomocnicze, wszystkie w wersjach nieskompresowanych (tj. rozwojowych).

Problem polega na tym, że proces ten trwa prawie 10 sekund.

Gdybym wyłączyć minifikacji całkowicie przekazania

{ compress: false } 

jako opcja, to dużo szybciej, ale wciąż trwa około 2 sekund.

Pytanie nr 1: Czy to zwykle, że UglifyJS 2 ma , że długo, nawet dla kilku plików? Czy prawdopodobnie robię coś nie tak?

Pytanie nr 2: Jak mogę przyspieszyć ten proces, bez wyłączania wszystkich użytecznych opcji UglifyJS 2?

+0

Nie mamy pojęcia o wielkości plików. Mam projekt JS, który zajmuje około 7-8 sekund, aby skompresować. Projekt obejmuje około 7 plików, z których każdy ma około 400-500 linii. – Adi

+0

Zaktualizowałem moje pytanie, ale twój komentarz już wskazuje, że zrobienie kilku sekund wydaje się normalne w moim scenariuszu. Dzięki :-)! –

+0

NIE zamieniasz tych plików na każde żądanie, prawda? – Mchl

Odpowiedz

7

Nie jest niczym niezwykłym, że minifiery zajmują kilka sekund, aby skompresować wiele dużych plików. 8-12 sekund jest w twoim przypadku w porządku (wiele dużych bibliotek).

Zalecam jednak nie kompresować tych bibliotek samodzielnie. Większość z nich posiada zespół programistów za nimi, którzy naprawdę wiedzą, co robią, polecam pobierania minified wersje ze źródła i zrobić tak proste, jak

copy *.min.js allLibraries.js 

lub

cp *.min.js allLibraries.js 

Note : Upewnij się, że konkatenacja w poprawnej kolejności, zwykle oznacza to The main libraries -> The plugins -> Your code.

Jeśli chodzi o przyspieszenie, inne niż wyłączenie fajnych funkcji, takich jak silna kompresja, niewiele można zrobić.

+0

Oznacza to, że uzyskaj wersje zminiaturyzowane, kompresuj tylko własne pliki za pomocą narzędzia takiego jak Uglify JS, a następnie dołącz je, prawda? –

+1

Cóż, szczerze mówiąc, właśnie to robię. Mogą istnieć opinie, które mówią inaczej. – Adi

+5

Hej downvoter, czy mógłby mi pomóc poprawić moją odpowiedź? Proszę dać mi znać, co mam źle, więc mogę to poprawić. – Adi

11

Po ustawieniu opcji nieużywanej kompresji na wartość false należy ją nieco przyspieszyć. Dostałem mój od 11sec do 5.5sec z tym właśnie.

{ 
     compress: { 
      unused: false 
     } 
    } 

Mniej niż różnica 2k z tym wyłączona.

+0

Ładne znalezisko, moje przeszło z 28s do 8s. Sprawdzając, ile rozmiar pliku został zapisany, zaoszczędził mi około 1kb (na około 1,3 MB pliku), aby usunąć nieużywany kod (spodziewałbym się znacznie większego). Wezmę poprawę prędkości o 20 sekund! – ryanm

+3

To powinna być zaakceptowana odpowiedź. Poprawa prędkości jest ogromna. – woens

+0

@woens To powinno działać tylko dla każdego przypadku. Różnica może być większa niż 1kb w zależności od tego, ile bibliotek należy uwzględnić w projekcie. – dosaki