Qual é o melhor compressor JavaScript disponível? Estou procurando uma ferramenta que:
- é fácil de usar
- tem uma alta taxa de compressão
- Produza resultados finais confiáveis (não estraga o código)
Qual é o melhor compressor JavaScript disponível? Estou procurando uma ferramenta que:
Respostas:
Lancei recentemente o UglifyJS , um compressor JavaScript escrito em JavaScript (executado na plataforma NodeJS Node.js , mas pode ser facilmente modificado para ser executado em qualquer mecanismo JavaScript, pois não precisa de Node.js
componentes internos). É muito mais rápido que o YUI Compressor e o Google Closure , compacta melhor que o YUI em todos os scripts em que o testei e é mais seguro que o Closure (sabe lidar com "eval" ou "with").
Além da remoção de espaço em branco, o UglifyJS também faz o seguinte:
foo["bar"]
- foo.bar
se sempre que possívelPS: Ah, também pode "embelezar". ;-)
Revisitando esta questão alguns anos depois, o UglifyJS , parece ser a melhor opção a partir de agora.
Conforme indicado abaixo, ele é executado na plataforma NodeJS, mas pode ser facilmente modificado para ser executado em qualquer mecanismo JavaScript.
--- Antiga resposta abaixo ---
O Google lançou o Closure Compiler, que parece estar gerando os menores arquivos até aqui e aqui
Antes disso, as várias opções eram as seguintes
Basicamente, o Packer faz um trabalho melhor na compactação inicial, mas se você deseja compactar os arquivos antes de enviá-los pelo fio (o que você deve fazer), o YUI Compressor obtém o menor tamanho final.
Os testes foram feitos no código jQuery btw.
@ daniel james menciona no comentário compressorrater que mostra o Packer liderando o gráfico na melhor compactação, então acho que sim
\uxxxx
literais por padrão .. usar por exemplo --charset UTF-8
(se você tem certeza que você deixe o know navegador sobre isso de alguma forma)
O Compressor YUI é o caminho a percorrer. Tem uma ótima taxa de compactação, é bem testado e está em uso entre muitos sites importantes e, bem, pessoalmente recomendado por mim.
Usei-o para os meus projetos sem um único erro de JavaScript ou soluço. E tem boa documentação.
Eu nunca usei seus recursos de compactação CSS, mas eles existem também. A compactação CSS também funciona.
Nota: Embora o / packer / de Dean Edwards atinja uma taxa de compactação melhor que o YUI Compressor, encontrei alguns erros de JavaScript ao usá-lo.
npm install packer
. (= D
Eu uso o ShrinkSafe no projeto Dojo - é excepcional porque ele realmente usa um interpretador JavaScript ( Rhino ) para lidar com a localização de símbolos no código e com a compreensão de seu escopo etc., o que ajuda a garantir que o código funcione quando for lançado. outra extremidade, ao contrário de muitas ferramentas de compactação que usam regex para fazer o mesmo (o que não é tão confiável).
Na verdade, eu tenho uma tarefa MSBuild em um Projeto de Implantação da Web na minha solução atual do Visual Studio que executa um script que, por sua vez, executa todos os arquivos JS da solução através do ShrinkSafe antes da implantação e funciona muito bem.
EDIT: By the way, "melhor" é aberto a debate, uma vez que os critérios para a "melhor" irá variar dependendo das necessidades do projeto. Pessoalmente, acho que o ShrinkSafe é um bom equilíbrio; para algumas pessoas que pensam o menor tamanho == melhor, será insuficiente.
EDIT: Vale a pena notar que o compressor YUI também usa Rhino.
Se você usa o Packer, basta ir até a opção 'encolher variáveis' e pressionar o código resultante. A opção base62 é apenas para se o seu servidor não puder enviar arquivos compactados em gzip. O empacotador com 'shrink vars' alcança melhor compactação da YUI, mas pode apresentar erros se você pular um ponto e vírgula em algum lugar.
base62 é basicamente o gzip de um homem pobre, e é por isso que gzipping o código base62-ed fornece arquivos maiores que o gzipping o código shrink-var-ed.
Ao pesquisar bala de prata, encontrei esta pergunta. Para Ruby on Rails http://github.com/sstephenson/sprockets
Aqui está o código fonte de um HttpHandler que faz isso, talvez isso ajude você
O bananascript.com costumava me dar melhores resultados.
KJScompress
http://opensource.seznam.cz/KJScompress/index.html
Kjscompress / csskompress é um conjunto de dois aplicativos (kjscompress a csscompress) para remover espaços em branco e comentários não significativos dos arquivos que contêm JavaScript e CSS. Ambos são aplicativos de linha de comando para o sistema operacional GNU / Linux.
O Js Crush é um bom compressor para uso após a minificação.