Pergunta

O que é o melhor do JavaScript compressor disponíveis?Eu estou procurando uma ferramenta que:

  • é fácil de usar
  • tem uma alta taxa de compressão
  • Produzir confiável resultados finais (não estragar o código)
Foi útil?

Solução

Eu recentemente lançado UglifyJS, JavaScript compressor que é escrito em JavaScript é executado no NodeJS Node.js plataforma, mas ele pode ser facilmente modificado para rodar em qualquer motor de JavaScript, pois não necessita de qualquer Node.js internos).É muito mais rápido do que tanto YUI Compressor e O Google Encerramento, ele comprime melhor do que YUI em todos os scripts que eu testei, e é mais seguro do que o seu Fechamento (sabe lidar com "eval" ou "com").

Diferente de espaço em branco remoção, UglifyJS também faz o seguinte:

  • alterações de nomes de variáveis locais (geralmente a única caracteres)
  • junta-consecutivo de declarações var
  • evita a inserção de qualquer desnecessárias parênteses, parens e ponto-e-vírgula
  • otimiza o IFs (remove "outro", quando ele detecta que não é necessário, transforma IFs em a &&, || ou ?/:operadores quando possível, etc.).
  • transformações foo["bar"] em foo.bar sempre que possível
  • remove cotações de chaves literais de objeto, sempre que possível
  • resolve expressões simples quando este leva a menores código (1+3*4 ==> 13)

PS:Oh, ele pode "embelezar" bem.;-)

Outras dicas

Revisitando a esta pergunta, alguns anos mais tarde, UglifyJS, parece ser a melhor opção a partir de agora.

Como indicado abaixo, ele é executado no NodeJS plataforma, mas pode ser facilmente modificado para rodar em qualquer motor de JavaScript.

--- Antigo resposta abaixo---

O Google lançou Encerramento Do Compilador o que parece estar a gerar o menor arquivos de tão longe como visto aqui e aqui

Anterior para que as várias opções foram como a seguir

Basicamente Packer faz um trabalho melhor na inicial compressão , mas se você estiver indo para gzip os arquivos antes de enviar sobre o fio (que você deve estar fazendo) YUI Compressor obtém o menor tamanho final.

Os testes foram feitos em jQuery código btw.

  • Original biblioteca jQuery 62,885 bytes , 19,758 bytes após gzip
  • jQuery só com JSMin 36,391 bytes , 11,541 bytes após gzip
  • jQuery só com Packer 21,557 bytes , 11,119 bytes após gzip
  • jQuery só com o YUI Compressor 31,822 bytes , 10,818 bytes após gzip

@daniel james menciona no comentário compressorrater o que mostra Packer, levando o gráfico em melhor compressão, então eu acho que ymmv

YUI Compressor é o caminho a percorrer.Ele tem uma ótima taxa de compressão, é bem testado e está em uso entre os muitos sites, e, bem, pessoalmente, recomendado por mim.

Eu usei-o para os meus projectos, sem um único erro de JavaScript ou soluço.E ele tem bons documentação.

Eu nunca usei seu CSS capacidade de compressão, mas eles também existem. CSS compressão funciona tão bem.

Nota:Apesar de Dean Edwards /packer/ alcança uma melhor taxa de compressão do que o YUI Compressor, eu me deparei com alguns erros de JavaScript quando usá-lo.

Eu uso ShrinkSafe a partir do Dojo projeto - ele é excepcional porque na verdade ele usa um interpretador JavaScript (Rhino) para lidar com a descoberta de símbolos no código e a compreensão de seu escopo, etc.o que ajuda a garantir que o código funcionará quando ele sai do outro lado, ao contrário de um monte de ferramentas de compressão que usar regex para fazer o mesmo (o que não é tão confiável).

Na verdade, tenho uma tarefa do MSBuild em um Projeto De Implantação Na Web na minha atual do Visual Studio solução que é executado um script que por sua vez executa toda a solução da JS através ShrinkSafe antes de implantar e ele funciona muito bem.

EDITAR: Pelo jeito, o "melhor" está aberto para o debate, uma vez que os critérios de "melhor" irá variar dependendo das necessidades do projeto.Pessoalmente, eu acho que ShrinkSafe é um bom equilíbrio;para algumas pessoas, o que pensam de menor tamanho == melhor, será insuficiente.

EDITAR: Vale a pena notar que o YUI compressor utiliza também o Rinoceronte.

Tente JSMin, tenho C#, Java, C e outras portas e prontamente disponíveis.

Se você usar Packer, basta ir longe, a 'encolher' variaveis opção e gzip, o código resultante.O base62 opção é apenas para se seu server não é possível enviar compactado arquivos.Packer com a 'encolher vars' alcança melhor compressão da YUI, mas pode introduzir bugs se você pulou um ponto-e-vírgula, em algum lugar.

base62 é, basicamente, um homem pobre gzip, é por isso que gzipping base62-ed código dá arquivos maiores do que gzipping encolher-var-ed código.

JSMin é outro.

Na busca de bala de prata, encontrei este questão.Para Ruby on Rails http://github.com/sstephenson/sprockets

Aqui está o código-fonte de um HttpHandler que faz isso, talvez ele vai ajudar você

Aqui é uma YUI compressor de script (Byuic) que encontra todos os js e css para um caminho e comprime /(opcionalmente) obfuscates-los.Bom para integrar em um processo de compilação.

bananascript.com usado para me dar os melhores resultados.

KJScompress

http://opensource.seznam.cz/KJScompress/index.html

Kjscompress/csskompress é um conjunto de dois aplicações (kjscompress um csscompress) para remover não-significativo espaços em branco e comentários a partir de arquivos com JavaScript e CSS.Ambos são aplicativos de linha de comando para Sistema operacional GNU/Linux.

Js Esmagar é um bom compressor para usar depois de ter reduzido.

Eu uso jscompressor.com como o chrome app.

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