Strumento per annullare / decomprimere JavaScript [chiuso]


430

Esistono script da riga di comando e / o strumenti online che possono invertire gli effetti della minificazione in modo simile a come Tidy può ripulire l'orrendo HTML?

(Sto specificamente cercando di annullare la minificazione di un file JavaScript minimizzato, quindi la ridenominazione delle variabili potrebbe essere ancora un problema.)


4
Per quelli di voi che potrebbero non essere a conoscenza, la minificazione cambia i nomi delle variabili interne in una singola lettera e rimuove i commenti sul codice. Annullare queste modifiche non può essere automatizzato.
Fiume Vivian,

@DanielAllenLangdon Un buon punto. Ho modificato la domanda in modo che non implichi più che la minimizzazione non cambi i nomi delle variabili.
Andy Ford,

12
FWIW ... ho
Andy Ford il

marcusjenkins.com/linux/… ha funzionato bene per me.
ychaouche

1
Per @DanielAllenLangdon: jsnice.org può unminify e de-offuscare anche il codice angularjs 30k.
Green

Risposte:


504

Puoi usare questo: http://jsbeautifier.org/ Ma dipende dal metodo minify che stai usando, questo formatta solo il codice, non cambia i nomi delle variabili, né decomprime la codifica base62.

modifica: infatti può decomprimere gli script "compressi" (imballato con il packer di Dean Edward: http://dean.edwards.name/packer/ )


2
+1 - Ho usato questo metodo prima e jsbeautifier.org è un servizio eccellente.
Dan Lew,

Grazie. Questo e 'esattamente quello che stavo cercando.
Andy Ford,


4
esiste una cosa come uno strumento che "cambia i nomi delle variabili" ed è ancora a conoscenza della sintassi di JS per non rompere il codice?
Jorge Vargas,

3
lo farei 10 volte se potessi. mi ha appena salvato da una giornata sprecata!
Benlumley,

154

Gli strumenti di sviluppo di Chrome hanno questa funzione integrata. Visualizza gli strumenti di sviluppo (premendo F12 è unidirezionale), nella scheda Sorgenti, la barra in basso a sinistra ha un set di icone. L'icona "{}" è "Stampa carina" ed esegue questa conversione su richiesta.

AGGIORNAMENTO: IE9 "Strumenti per sviluppatori F12" ha anche una funzione "Formato JavaScript" nella scheda Script sotto l'icona Strumenti lì. ( vedi Suggerimento n. 4 in F12 Il segreto per il debug web meglio conservato )

inserisci qui la descrizione dell'immagine


1
Per il particolare .js che stavo cercando di annullare la minificazione, questo metodo ha funzionato al meglio, evviva.
igneosaur,

1
Questo è ora nella scheda "Sorgenti", non nella scheda Script.
mhenry1384,

@ mhenry1384: Sì, Chrome ha rinominato la scheda. Ho aggiornato la risposta di conseguenza.
Jon Adams,

SÌ!! (la nostra app non ha una modalità debug / dev per js di cui sono a conoscenza - per fortuna non abbreviamo / trasformiamo i nomi delle variabili.)
Steven Lu,

2
Solo un avvertimento: Chrome a volte confonde il codice JavaScript. Ad esempio, if (a) /regex/.match(foo);è piuttosto stampato in quanto si if (a)\n / /regex/ .\nmatch(foo);tratta di un errore di sintassi.
anfetamachina,

56

Fatto! JSBeautifier fa esattamente questo e hai anche opzioni per la formattazione automatica.


5
stackoverflow-then-google invece di google-then-stackoverflow? :))))
dfa

Ho fatto il google per "formattatore javascript online"
cgp

1
Questo plugin FireFox utilizza JSBeautifier per annullare la minimizzazione di javascript in modo da poter impostare i punti di interruzione sulle linee nel debugger js di FireBug
BT


14

In Firefox, SpiderMonkey e Rhino puoi avvolgere qualsiasi codice in una funzione anonima e chiamarne il toSourcemetodo, che ti darà una fonte ben formattata della funzione.

toSource elimina anche i commenti.

Per esempio. :

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

Sarà convertito in una stringa:

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

PS : Non è uno "strumento online", ma tutte le domande sulle tecniche generali di abbellimento sono chiuse come duplicati di questo.


Interessante. Ho fatto la domanda 2,5 anni fa, quindi sento che è troppo tardi per modificare il titolo, ma mi piace ancora vedere sia le opzioni online che offline. Grazie per essere intervenuto. +1
Andy Ford,

10

Se hai un Mac e TextMate - Un'alternativa semplice per la formattazione di Javascript è:

  1. Apri il file con Textmate.
  2. Fai clic su> Pacchetti> JavaScript> Riformatta documento
  3. Apri una birra.

2
La birra viene servita proprio ora :)
dgilperez,

6

La maggior parte degli IDE offre anche funzionalità di formattazione automatica. Per esempio in NetBeans, basta premere CTRL + K .


5

In alternativa (dal momento che non conoscevo jsbeautifier.org fino ad ora), ho usato un bookmarklet che ha riattivato il pulsante di decodifica in Dean Edward's Packer.

Ho trovato le istruzioni e il bookmarklet qui .

ecco il bookmarklet (nel caso in cui il sito non sia attivo)

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);}}




5

Simile alla risposta di Stone , ma per gli sviluppatori Windows / .NET:

Se hai Visual Studio e ReSharper - Un'alternativa semplice per la formattazione di Javascript è:

  • Apri il file con Visual Studio;
  • Fare clic su ReSharper> Strumenti> Codice pulizia (Ctrl + E, C);
  • Seleziona "Predefinito: Riformatta codice" e fai clic su OK;
  • Apri una birra.

4

Nonostante la sua interfaccia a miglia di distanza, JSPretty è uno strumento valido, gratuito e online per rendere leggibili i codici sorgente javascript. È possibile applicare il tipo di rientro preferito e rilevare anche l'offuscamento.





Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.