Pergunta

Estou escrevendo um script em lote para embelezar o código JavaScript.Precisa funcionar em ambos janelas e Linux.

Como posso embelezar o código JavaScript usando as ferramentas de linha de comando?

Foi útil?

Solução

Primeiro, escolha seu Pretty Print/Beautifier baseado em Javascript favorito.Eu prefiro aquele em http://jsbeautifier.org/, porque foi o que encontrei primeiro.Baixa seu arquivo https://github.com/beautify-web/js-beautify/blob/master/js/lib/beautify.js

Em segundo lugar, baixe e instale o mecanismo Javascript baseado em Java do grupo Mozilla, Rinoceronte."Instalar" é um pouco enganador;Baixe o arquivo zip, extraia tudo, coloque js.jar em seu classpath Java (ou Biblioteca/Java/Extensões no OS X).Você pode então executar scripts com uma invocação semelhante a esta

java -cp js.jar org.mozilla.javascript.tools.shell.Main name-of-script.js

Use o Pretty Print/Beautifier da etapa 1 para escrever um pequeno script de shell que irá ler seu arquivo javascript e executá-lo através do Pretty Print/Beautifier da etapa um.Por exemplo

//original code    
(function() { ... js_beautify code ... }());

//new code
print(global.js_beautify(readFile(arguments[0])));

O Rhino fornece ao javascript algumas funções extras úteis que não necessariamente fazem sentido no contexto do navegador, mas sim no contexto do console.A função print faz o que você espera e imprime uma string.A função readFile aceita uma string de caminho de arquivo como argumento e retorna o conteúdo desse arquivo.

Você invocaria o item acima, algo como

java -cp js.jar org.mozilla.javascript.tools.shell.Main beautify.js file-to-pp.js

Você pode misturar e combinar Java e Javascript em seus scripts de execução do Rhino, portanto, se você conhece um pouco de Java, não será muito difícil fazer isso funcionar também com fluxos de texto.

Outras dicas

Se você estiver usando nodejs, tente uglify-js

No Ubuntu 12.04, supondo que você já tenha o nodejs instalado, você pode instalar o uglify com:

sudo npm install -g uglify-js

E então obtenha as opções:

uglifyjs -h

Então, se eu tiver um arquivo fonte foo.js que se parece com isso:

// foo.js -- minified
function foo(bar,baz){console.log("something something");return true;}

Posso embelezá-lo assim:

uglifyjs foo.js --beautify --output cutefoo.js

uglify usa espaços para recuo por padrão, então se eu quiser converter o recuo de 4 espaços em tabulações, posso executá-lo unexpand que vem com o Ubuntu 12.04:

unexpand --tabs=4 cutefoo.js > cuterfoo.js

Ou você pode fazer tudo de uma vez:

uglifyjs foo.js --beautify | unexpand --tabs=4 > cutestfoo.js

Você pode descobrir mais sobre unexpand aqui

então, depois de tudo isso, acabo com um arquivo parecido com este:

function foo(bar, baz) {
    console.log("something something");
    return true;
}

atualização 07/06/2016

Parece que o mantenedor do uglify-js está trabalhando agora versão 2 embora a instalação seja a mesma.

ATUALIZAÇÃO de abril de 2014:

O embelezador foi reescrito desde que respondi isso em 2010.Agora existe um módulo python lá, um pacote npm para nodejs e o arquivo jar desapareceu.Por favor leia o página do projeto em github.com.

Estilo Python:

 $ pip install jsbeautifier

Estilo NPM:

 $ npm -g install js-beautify

para usá-lo:

 $ js-beautify file.js

Resposta original

Adicionando à resposta de @Alan Storm

o embelezador de linha de comando baseado em http://jsbeautifier.org/ ficou um pouco mais fácil de usar, porque agora é (alternativamente) baseado no mecanismo javascript V8 (código c++) em vez do rinoceronte (mecanismo JS baseado em java, empacotado como "js.jar").Então você pode usar o V8 em vez do Rino.

Como usar:

baixe o arquivo zip jsbeautifier.org dehttp://github.com/einars/js-beautify/zipball/master

(este é um URL de download vinculado a um arquivo zip, como http://download.github.com/einars-js-beautify-10384df.zip)

antigo (não funciona mais, o arquivo jar desapareceu)

  java -jar js.jar  name-of-script.js

novo (alternativa)

instale/compile v8 lib FROM svn, consulte v8/README.txt no arquivo zip mencionado acima

  ./jsbeautify somefile.js

-tem opções de linha de comando ligeiramente diferentes da versão rhino,

-e funciona muito bem no Eclipse quando configurado como uma "Ferramenta Externa"

No Ubuntu 18.04 LTS

$ sudo apt install jsbeautifier
$ js-beautify ugly.js > beautiful.js

No console, você pode usar Estilo Artístico (também conhecido comoAStyle) com --mode=java.
Funciona muito bem e é gratuito, de código aberto e multiplataforma (Linux, Mac OS X, Windows).

Não consigo adicionar um comentário à resposta aceita, por isso você vê uma postagem que não deveria existir.

Basicamente, eu também precisava de um embelezador javascript em um código java e, para minha surpresa, nenhum está disponível até onde pude encontrar.Então, eu mesmo codifiquei um inteiramente com base na resposta aceita (ele envolve o script jsbeautifier.org beautifier .js, mas pode ser chamado de java ou da linha de comando).

O código está localizado em https://github.com/belgampaul/JsBeautifier

Usei rhino e beautifier.js

USO do console:java -jar jsbeautifier.jar recuo do script

exemplo:java -jar jsbeautifier.jar "função ff() {return;}" 2

USO do código java:String estática pública jsBeautify (String jsCode, int indentSize)

Você está convidado a estender o código.No meu caso eu só precisei do recuo para poder verificar o javascript gerado durante o desenvolvimento.

Na esperança de que você economize algum tempo em seu projeto.

Escrevi um artigo explicando como construir um embelezador de JavaScript de linha de comando implementado em JavaScript em menos de 5 minutos.YMMV.

  1. Baixe o Rhino estável mais recente e descompacte-o em algum lugar, por exemplo.~/dev/javascript/rinoceronte
  2. Baixe beautify.js, que é referenciado no jsbeautifier.org mencionado acima, e copie-o em algum lugar, por exemplo.~/dev/javascript/bin/cli-beautifier.js
  3. Adicione isto no final de beautify.js (usando algumas propriedades adicionais de nível superior para JavaScript):

    // Run the beautifier on the file passed as the first argument.
    print( j23s_beautify( readFile( arguments[0] )));
    
  4. Copie e cole o código a seguir em um arquivo executável, por exemplo.~/dev/javascript/bin/jsbeautifier.sh:

    #!/bin/sh
    java -cp ~/dev/javascript/rhino/js.jar org.mozilla.javascript.tools.shell.Main ~/dev/web/javascript/bin/cli-beautifier.js $*
    
  5. (opcional) Adicione a pasta com jsbeautifier.js ao PATH ou mova para alguma pasta que já esteja lá.

Acredito que quando você perguntou sobre a ferramenta de linha de comando, você só queria embelezar todos os seus arquivos js em lote.

Neste caso, o Intellij IDEA (testado com 11.5) pode fazer isso.

Você só precisa selecionar qualquer um dos arquivos do seu projeto e selecionar "Código" -> "Reformatar código.." no menu principal do IDE.Em seguida, na caixa de diálogo selecione "todos os arquivos no diretório ..." e pressione "enter".Apenas certifique-se de dedicar memória suficiente para a JVM.

Use o método JavaScript moderno:

Usar Grunhido em combinação com o Plug-in jsbeautifier para Grunt

Você pode instalar tudo facilmente em seu ambiente de desenvolvimento usando npm.

Tudo que você precisa é configurar um Gruntfile.js com as tarefas apropriadas, que também podem envolver concatenação de arquivos, lint, uglify, minify etc, e executar o comando grunt.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top