Jaki jest najlepszy dostępny kompresor JavaScript? Szukam narzędzia, które:
- jest łatwy w użyciu
- ma wysoki współczynnik kompresji
- Osiągaj wiarygodne wyniki końcowe (nie psuje kodu)
Jaki jest najlepszy dostępny kompresor JavaScript? Szukam narzędzia, które:
Odpowiedzi:
Niedawno wypuściłem UglifyJS , kompresor JavaScript, który jest napisany w JavaScript (działa na platformie NodeJS Node.js , ale można go łatwo zmodyfikować, aby działał na dowolnym silniku JavaScript, ponieważ nie potrzebuje żadnych elementów Node.js
wewnętrznych). Jest dużo szybszy niż zarówno YUI Compressor, jak i Google Closure , kompresuje lepiej niż YUI we wszystkich skryptach, na których go testowałem, i jest bezpieczniejszy niż Closure (wie, jak radzić sobie z „eval” lub „with”).
Oprócz usuwania białych znaków UglifyJS wykonuje również następujące czynności:
foo["bar"]
się foo.bar
tam, gdzie to możliwePS: Och, to też może „upiększać”. ;-)
Wrócenie do tego pytania kilka lat później, UglifyJS , wydaje się obecnie najlepszą opcją.
Jak podano poniżej, działa na platformie NodeJS, ale można go łatwo zmodyfikować, aby działał na dowolnym silniku JavaScript.
--- Stara odpowiedź poniżej ---
Google wypuścił Closure Compiler, który wydaje się generować najmniejsze pliki, jak dotąd tutaj i tutaj
Wcześniej różne opcje były następujące
Zasadniczo Packer radzi sobie lepiej przy początkowej kompresji, ale jeśli zamierzasz spakować pliki przed wysłaniem ich (co powinieneś zrobić), YUI Compressor uzyska najmniejszy ostateczny rozmiar.
Testy zostały wykonane na kodzie jQuery btw.
@ daniel james wspomina w komentarzu kompresorrater, który pokazuje Packerowi na czele tabeli w najlepszej kompresji, więc myślę, że ymmv
\uxxxx
domyślnie konwertuje znaki inne niż ASCII w łańcuchach na literały .. użyj np. --charset UTF-8
(jeśli jesteś pewien, że jakoś o tym poinformujesz przeglądarkę)
YUI Compressor to droga do zrobienia. Ma świetny współczynnik kompresji, jest dobrze przetestowany i jest używany w wielu najpopularniejszych witrynach, a także osobiście polecany przeze mnie.
Używałem go w moich projektach bez ani jednego błędu JavaScript lub czkawki. I ma ładną dokumentację.
Nigdy nie korzystałem z jego możliwości kompresji CSS, ale one też istnieją. Kompresja CSS działa równie dobrze.
Uwaga: Chociaż / packer / Dean Edwardsa osiąga lepszy współczynnik kompresji niż YUI Compressor, napotkałem kilka błędów JavaScript podczas korzystania z niego.
npm install packer
. (= D
Używam ShrinkSafe z projektu Dojo - jest to wyjątkowe, ponieważ faktycznie używa interpretera JavaScript ( Rhino ) do wyszukiwania symboli w kodzie i zrozumienia ich zakresu itp., Co pomaga zapewnić, że kod będzie działał, gdy wyjdzie z drugiej strony, w przeciwieństwie do wielu narzędzi do kompresji, które używają wyrażeń regularnych do tego samego (co nie jest tak niezawodne).
Właściwie mam zadanie MSBuild w projekcie wdrażania sieci Web w moim obecnym rozwiązaniu Visual Studio, które uruchamia skrypt, który z kolei uruchamia wszystkie pliki JS rozwiązania przez ShrinkSafe przed wdrożeniem i działa całkiem dobrze.
EDYCJA: Nawiasem mówiąc, „najlepszy” jest przedmiotem dyskusji, ponieważ kryteria „najlepszego” będą się różnić w zależności od potrzeb projektu. Osobiście uważam, że ShrinkSafe to dobra równowaga; dla niektórych osób, które uważają, że najmniejszy rozmiar == najlepszy, będzie niewystarczający.
EDYCJA: Warto zauważyć, że kompresor YUI również używa Rhino.
Jeśli używasz programu Packer, po prostu wybierz opcję „zmniejsz zmienne” i spakuj wynikowy kod za pomocą programu gzip. Opcja base62 jest używana tylko wtedy, gdy twój serwer nie może wysyłać plików spakowanych gzipem. Packer z 'shrink vars' osiąga lepszą kompresję YUI, ale może wprowadzić błędy, jeśli pominiesz gdzieś średnik.
base62 jest w zasadzie gzipem dla biednych ludzi, dlatego zgzowanie kodu base62-ed daje większe pliki niż gzipowanie kodu shrink-var-ed.
Szukając srebrnej kuli, znalazłem to pytanie. Dla Ruby on Rails http://github.com/sstephenson/sprockets
Oto kod źródłowy HttpHandler, który to robi, może ci pomoże
bananascript.com dawał mi najlepsze wyniki.
KJScompress
http://opensource.seznam.cz/KJScompress/index.html
Kjscompress / csskompress to zestaw dwóch aplikacji (kjscompress a csscompress) do usuwania nieistotnych białych znaków i komentarzy z plików zawierających JavaScript i CSS. Obie są aplikacjami wiersza poleceń dla systemu operacyjnego GNU / Linux.