Ferramenta para desinstalar / descompactar JavaScript [fechado]

430

Existem scripts de linha de comando e / ou ferramentas online que podem reverter os efeitos da minificação semelhantes a como o Tidy pode limpar HTML horrível?

(Estou procurando especificamente desminificar um arquivo JavaScript minificado, portanto, a renomeação de variáveis ​​ainda pode ser um problema.)

Andy Ford
fonte
4
Para quem não sabe, a minificação altera os nomes das variáveis ​​internas para uma única letra e remove os comentários do código. Desfazer essas alterações não pode ser automatizado.
Vivian River
@DanielAllenLangdon Good point. Eu editei a pergunta para que não implique mais que a minificação não mude os nomes das variáveis.
Andy Ford
12
FWIW ... acabei de encontrar JS NICE jsnice.org
Andy Ford
marcusjenkins.com/linux/… funcionou bem para mim.
ychaouche
1
Para @DanielAllenLangdon: o jsnice.org pode desinstalar e ocultar até mesmo o código angularjs de 30k.
Verde

Respostas:

504

Você pode usar isto: http://jsbeautifier.org/ Mas depende do método minify que você está usando, este apenas formata o código, não altera nomes de variáveis ​​nem descompacta a codificação base62.

edit: na verdade, ele pode descompactar scripts "compactados" (compactados com o empacotador de Dean Edward: http://dean.edwards.name/packer/ )

Fabien Ménager
fonte
2
+1 - Eu já usei esse método antes, e o jsbeautifier.org é um excelente serviço.
Dan Lew
Obrigado. Era exatamente isso que eu estava procurando.
Andy Ford
5
Não, eu disse a base 62: dean.edwards.name/packer e en.wikipedia.org/wiki/Base_62
Fabien Ménager
4
existe uma ferramenta que "altera nomes de variáveis" e ainda está ciente da sintaxe JS para não quebrar o código?
Jorge Vargas
3
faria isso 10 vezes se eu pudesse. apenas me salvou de um dia perdido!
benlumley
154

As ferramentas de desenvolvedor do Chrome possuem esse recurso embutido. Exiba as ferramentas do desenvolvedor (pressionar F12 é uma maneira). Na guia Fontes, a barra inferior esquerda possui um conjunto de ícones. O ícone "{}" é "Impressão bonita" e faz essa conversão sob demanda.

ATUALIZAÇÃO: O IE9 "Ferramentas de desenvolvedor F12" também possui um recurso "Formatar JavaScript" na guia Script, abaixo do ícone Ferramentas. ( consulte a dica nº 4 em F12, o segredo mais bem guardado para depuração da web )

insira a descrição da imagem aqui

Jon Adams
fonte
1
Para o .js em particular que eu estava tentando desminificar, esse método funcionou da melhor maneira.
Igneosaur #
1
Agora, isso está na guia "Fontes", não na guia Scripts.
precisa saber é o seguinte
@ mhenry1384: Sim, o Chrome renomeou a guia. Eu atualizei a resposta de acordo.
Jon Adams
SIM!! (nosso aplicativo não tem um modo de depuração / dev para js que eu estou ciente de - nós felizmente não encurtar / transformar nomes de variáveis.)
Steven Lu
2
Apenas um alerta: o Chrome às vezes atrapalha o código JavaScript. Por exemplo, if (a) /regex/.match(foo);é bastante impresso, o if (a)\n / /regex/ .\nmatch(foo);que é um erro de sintaxe.
Amphetamachine
56

Entendi! O JSBeautifier faz exatamente isso, e você ainda tem opções para a formatação automática.

O Flash
fonte
5
stackoverflow-then-google em vez de google-then-stackoverflow? :))))
dfa
Eu fiz o google para "formatador javascript online"
cgp
1
Este plugin FireFox usa JSBeautifier para javascript un-minify para que você possa, em seguida, definir pontos de interrupção em linhas no depurador do Firebug js !!: addons.mozilla.org/en-US/firefox/addon/javascript-deminifier
BT
16

Você não pode simplesmente usar um formatador javascript ( http://javascript.about.com/library/blformat.htm )?

Janco
fonte
+1 para a resposta que também funciona. fabien por acaso respondeu primeiro
Andy Ford
Isso responde apenas à parte "descomprimir" da pergunta.
Jorge Vargas
Não, isso não está funcionando bem. Ele quebrou o código ... :(
Ramesh
14

No Firefox, SpiderMonkey e Rhino, você pode agrupar qualquer código em uma função anônima e chamar seu toSourcemétodo, o que fornecerá uma fonte bem formatada da função.

toSource também retira comentários.

Por exemplo. :

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

Será convertido em uma string:

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

PS : Não é uma "ferramenta online", mas todas as perguntas sobre técnicas gerais de embelezamento são fechadas como duplicatas.

katspaugh
fonte
Interessante. Fiz a pergunta há 2,5 anos, então acho que é tarde demais para editar o título, mas ainda gosto de ver as opções online e offline. Obrigado por compartilhar. +1
Andy Ford
10

Se você possui um Mac e TextMate - Uma alternativa fácil para formatar o Javascript é:

  1. Abra o arquivo com o Textmate.
  2. Clique em> Bundles> JavaScript> Reformat Document
  3. Abra uma cerveja.
Pedra
fonte
2
Cerveja que está sendo servido agora :)
dgilperez
6

A maioria dos IDEs também oferece recursos de formatação automática. Por exemplo no NetBeans, basta pressionar CTRL + K .

gou1
fonte
5

Como alternativa (desde que eu não conhecia o jsbeautifier.org até agora), usei um bookmarklet que reativou o botão de decodificação no Packer de Dean Edward.

Encontrei as instruções e o bookmarklet aqui .

aqui está o bookmarklet (caso o site esteja fora do ar)

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
fonte
5

Semelhante à resposta de Stone , mas para desenvolvedores de Windows / .NET:

Se você possui o Visual Studio e o ReSharper - Uma alternativa fácil para formatar o Javascript é:

  • Abra o arquivo com o Visual Studio;
  • Clique em ReSharper> Ferramentas> Código de Limpeza (Ctrl + E, C);
  • Selecione "Padrão: reformatar código" e clique em OK;
  • Abra uma cerveja.
C. Augusto Proiete
fonte
4

Apesar de sua interface muito longe de ser bonita, o JSPretty é uma boa ferramenta gratuita e on-line para tornar os códigos-fonte javascript legíveis por humanos. Você pode aplicar o seu tipo preferido de recuo e também pode detectar a ofuscação.

Farshid
fonte
3

O Pretty Diff embeleza (imprime bastante) o JavaScript de uma maneira que esteja em conformidade com osalgoritmos de espaço em branco JSLint e JSHint .

austincheney
fonte
É irônico o site não ser tão bonito, mas essa é uma ferramenta interessante.
Andy Ford
3

Não fiquei muito feliz com a saída de jsbeautifier.org pelo que eu estava colocando, então fiz mais algumas pesquisas e encontrei este site: http://www.centralinternet.com.br/javascript-beautifier

Funcionou extremamente bem para mim.

Doyle Lewis
fonte