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.