Narzędzie do unminify / decompress JavaScript [zamknięte]

430

Czy są jakieś skrypty wiersza poleceń i / lub narzędzia online, które mogą odwrócić efekty minifikacji, podobnie jak Tidy może wyczyścić przerażający HTML?

(W szczególności chcę unminifyzować zminimalizowany plik JavaScript, więc zmiana nazwy może nadal stanowić problem).

Andy Ford
źródło
4
Dla tych z was, którzy mogą nie być świadomi, minification zmienia nazwy zmiennych wewnętrznych na jedną literę i usuwa komentarze do kodu. Cofnięcia tych zmian nie można zautomatyzować.
Vivian River
@DanielAllenLangdon Dobra uwaga. Zredagowałem pytanie, aby nie sugerowało, że minimalizacja nie zmienia nazw zmiennych.
Andy Ford
12
FWIW ... właśnie znalazłem JS NICE jsnice.org
Andy Ford
marcusjenkins.com/linux/… działał dobrze dla mnie.
ychaouche,
1
Dla @DanielAllenLangdon: jsnice.org może unminifikować i zaciemnić nawet 30k kodu angularjs.
Zielony

Odpowiedzi:

504

Możesz użyć tego: http://jsbeautifier.org/ Ale to zależy od używanej metody minify, ta tylko formatuje kod, nie zmienia nazw zmiennych ani nie dekompresuje kodowania base62.

edycja: w rzeczywistości może rozpakować „spakowane” skrypty (wypełnione pakerem Deana Edwarda: http://dean.edwards.name/packer/ )

Fabien Ménager
źródło
2
+1 - Użyłem już tej metody, a jsbeautifier.org to doskonała usługa.
Dan Lew
Dzięki. Właśnie tego szukałem.
Andy Ford
5
Nie, powiedziałem: baza 62: dean.edwards.name/packer and en.wikipedia.org/wiki/Base_62
Fabien Ménager
4
czy istnieje coś takiego jak narzędzie, które „zmienia nazwy zmiennych” i wciąż ma świadomość składni JS, aby nie złamać kodu?
Jorge Vargas,
3
zrobiłbym to 10 razy, gdybym mógł. właśnie uratowałem mnie przed zmarnowanym dniem!
benlumley,
154

Narzędzia dla programistów Chrome mają tę wbudowaną funkcję. Wyświetl narzędzia programistyczne (naciśnięcie klawisza F12 to jeden sposób), na karcie Źródła lewy dolny pasek zawiera zestaw ikon. Ikona „{}” to „Pretty print” i dokonuje tej konwersji na żądanie.

AKTUALIZACJA: IE9 „Narzędzia programistyczne F12” ma również funkcję „Formatuj JavaScript” na karcie Skrypt pod ikoną Narzędzia. ( patrz Porada 4 w F12 Najlepiej strzeżony sekret debugowania sieci )

wprowadź opis zdjęcia tutaj

Jon Adams
źródło
1
W przypadku konkretnego pliku .js, którego próbowałem cofnąć, ta metoda działała najlepiej, na zdrowie.
igneozaur
1
Znajduje się teraz na karcie „Źródła”, a nie na karcie Skrypty.
mhenry1384
@ mhenry1384: Tak, Chrome zmienił nazwę karty. Odpowiednio zaktualizowałem odpowiedź.
Jon Adams
TAK!! (nasza aplikacja nie ma trybu debugowania / deweloperskiego dla js, o którym wiem - na szczęście nie skracamy / przekształcamy nazw zmiennych).
Steven Lu
2
Po prostu jeden na jednego: Chrome czasami psuje kod JavaScript. Na przykład if (a) /regex/.match(foo);jest dość drukowany jako if (a)\n / /regex/ .\nmatch(foo);błąd składniowy.
amfetamachina
56

Rozumiem! JSBeautifier robi dokładnie to, a ty masz nawet opcje automatycznego formatowania.

Błysk
źródło
5
stackoverflow-then-google zamiast google-then-stackoverflow? :))))
dfa
Zrobiłem Google dla „javascript formatter online”
cgp
1
Ta wtyczka FireFox używa JSBeautifier do cofania minimalizacji javascript, dzięki czemu można następnie ustawić punkty przerwania dla linii w debuggerze js FireBuga !!: addons.mozilla.org/en-US/firefox/addon/javascript-deminifier
BT
16

Czy nie możesz po prostu użyć formatyzatora javascript ( http://javascript.about.com/library/blformat.htm )?

Janco
źródło
+1 za odpowiedź, która również działa. fabien właśnie odpowiedział pierwszy
Andy Ford
To odpowiada tylko na część „dekompresującą” pytania.
Jorge Vargas,
Nie, to nie działa dobrze. Łamie kod ... :(
Ramesh
14

W Firefoksie, SpiderMonkey i Rhino możesz owinąć dowolny kod w anonimową funkcję i wywołać jej toSourcemetodę, która da ci ładnie sformatowane źródło funkcji.

toSource usuwa również komentarze.

Np. :

(function () { /* Say hello. */ var x = 'Hello!'; print(x); }).toSource()

Zostanie przekonwertowany na ciąg:

function () {
    var x = "Hello!";
    print(x);
}

PS : To nie jest „narzędzie online”, ale wszystkie pytania dotyczące ogólnych technik upiększania są zamknięte jako duplikaty tego.

katspaugh
źródło
Ciekawy. Zadałem to pytanie 2,5 roku temu, więc wydaje mi się, że jest za późno na edycję tytułu, ale nadal lubię widzieć zarówno opcje online, jak i offline. Dzięki za wejście. +1
Andy Ford
10

Jeśli masz komputer Mac i TextMate - łatwą alternatywą dla formatowania Javascript jest:

  1. Otwórz plik za pomocą Textmate.
  2. Kliknij> Pakiety> JavaScript> Reformatuj dokument
  3. Roztrzaskuj piwo.
Złóg
źródło
2
Teraz podaje się piwo :)
dgilperez
6

Większość IDE oferuje również funkcje automatycznego formatowania. Na przykład w NetBeans, po prostu naciśnij Ctrl + K .

gou1
źródło
5

Alternatywnie (ponieważ do tej pory nie wiedziałem o jsbeautifier.org) skorzystałem z bookmarkletu, który ponownie włączył przycisk dekodowania w Packerze Deana Edwarda.

Tutaj znalazłem instrukcje i bookmarklet .

tutaj jest bookmarklet (na wypadek, gdyby strona nie działała)

javascript:for%20(i=0;i<document.forms.length;++i)%20{for(j=0;j<document.forms[i].elements.length;++j){document.forms[i].elements[j].removeAttribute(%22readonly%22);document.forms[i].elements[j].removeAttribute(%22disabled%22);}}
Mottie
źródło
5

Podobne do odpowiedzi Stone'a , ale dla programistów Windows / .NET:

Jeśli masz program Visual Studio i ReSharper - łatwą alternatywą dla formatowania Javascript jest:

  • Otwórz plik za pomocą Visual Studio;
  • Kliknij ReSharper> Narzędzia> Kod czyszczenia (Ctrl + E, C);
  • Wybierz „Domyślnie: kod ponownego formatowania” i kliknij OK;
  • Roztrzaskuj piwo.
C. Augusto Proiete
źródło
4

Pomimo tego, że jest bardzo ładny interfejs, JSPretty jest dobrym, darmowym i internetowym narzędziem do tworzenia czytelnych kodów źródłowych javascript. Możesz wymusić preferowany typ wcięcia, a także wykryć zaciemnianie.

Farshid
źródło
3

Pretty Diff upiększy (ładnie wydrukuje) JavaScript w sposób zgodny zalgorytmami białych znaków JSLint i JSHint .

austincheney
źródło
Ironiczne jest to, że strona jest tak ładna, ale to fajne narzędzie.
Andy Ford