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.