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.)


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/ )


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


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


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.


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


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.


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.

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 .


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




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.

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.





Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.