Pergunta

O que você usa para minimizar e compactar bibliotecas JavaScript?

Foi útil?

Solução

Eu uso YUI Compressor . Parece fazer o trabalho bem!

Outras dicas

Eu usei YUI Compressor por um longo tempo e não tiveram problemas com ele , mas recentemente começou a usar Google Closure Compiler e teve algum sucesso com ele. Minhas impressões sobre ele até agora:

  • É geralmente supera YUI Compressor em termos de redução de tamanho de arquivo. Por uma pequena quantidade sobre o modo simples, e por um monte em modo avançado.
  • Modo simples tem sido até agora tão fiável como YUI Compressor. Nada que eu alimentava mostrou quaisquer problemas.
  • Modo Avançado "compilação" é ótimo para alguns scripts, mas a redução do tamanho dramática do seu script vem à custa de um monte de mexer com o código que tem uma chance decente de quebrá-lo. Há href="http://code.google.com/closure/compiler/docs/api-tutorial3.html" para lidar com alguns destes problemas e compreender o que que está fazendo pode percorrer um longo caminho para evitar problemas, mas eu geralmente evitar usar este modo.

Eu aproximou-se usando o Google Closure Compiler no modo simples "compilação", porque ligeiramente Supera YUI Compressor em geral. Eu usei-o consideravelmente menos do que eu tenho YUI Compressor, mas pelo que tenho visto até agora eu recomendo-lo.

Um outro que eu ainda tenho que tentar, mas parece promissor é UglifyJS Mihai do Bazon .

Você tem um rebanho de possibilidades aqui:

Da minha experiência pessoal, eu recomendo que você use o Dojo SDK para construir uma compilação personalizada, que você pode, em seguida, por sua vez, configure, quer usar seu compilador ShrinkSafe de costume, ou o Google Closure, que agora suportam bem .

Em termos de compactação, eu acho que o Google Closure é aquele produzindo os melhores resultados para mim até agora, mas estou geralmente satisfeitos com ShrinkSafe e é um pouco mais velho e mais robusto, enquanto Closure Compiler parece um pouco de um novo garoto no bloco (que suas partes interessadas podem não ser muito afeiçoado de, por exemplo).

Algumas pessoas juram apenas pelo Compressor YUI embora. Eu, pessoalmente, não posso atestar isso.

Agora, se você pergunta era a compressa bibliotecas e não apenas o seu próprio código JavaScript, que, obviamente, fica muito mais envolvidos, como você vai precisar para a maioria destas ferramentas para exportar os símbolos que não deve ser renomeado ou despojado. A maioria dos compressores decentes irá remover funções que eles acham que não são utilizadas - muitas vezes o caso em uma biblioteca, se não vinculado a um projeto, obviamente - e mudar os nomes para torná-los mais curtos e usar menos caracteres - também um problema como você quer, obviamente, uma pública API para não ser adulterado.

Você pode encontrar outros tópicos sobre este tema tão bem e encontrar informações na documentação de suporte dos instrumentos. Você também pode querer ter um olhar para JSBuilder2 , uma espécie de pingente para ferramenta de compilação do Dojo ( assim, usando ShrinkSafe ou Closure Compiler) para ExtJS (usando o compressor YUI).

(Sorry, sendo um novo usuário SO, eu não posso adicionar mais de um link para que eu não posso ligar diretamente para as ferramentas.)

EDIT: sobre as preocupações expressas em algumas respostas que a compressão pode introduzir bugs e que torna a depuração mais fácil, pois o código não for mutilado: sim, é uma preocupação válida. No entanto:

  • você receberá uma melhoria muito significativa em termos de largura de banda se você usar um minifier, mesmo com a compressão gzip activado (e você pode aprender a compressão alavancagem gzip, fazendo a vida do compressor mais fácil
  • você deve apenas provar o seu código no modo de depuração e de produção para garantir o comportamento é idêntico. Quero dizer, é parte de seu trabalho, bem como ...
  • alguns desses compressores foram em torno de um tempo e realmente não vai introduzir bugs em seu código. Eles são realmente apenas re-organizar as coisas e substituindo cordas, realmente.
  • alguns compressores (por exemplo, o sistema dojo construção) vêm com opções para que você possa produzir tanto um comprimido e uma saída não comprimido, de modo que você pode, então, permitir diferentes modos de depuração e produção, usando parâmetros de consulta por exemplo.

Eu não minimizar JavaScript em tudo:. Compressão gzip é bom o suficiente para mim e tem a vantagem adicional de que mensagens de erro ainda será útil

Eu também usar YUI Compressor. Eu tenho uma tarefa formiga assim que eu uso em meus projetos:

<!--
YUI Compressor tasks 
http://www.julienlecomte.net/yuicompressor/README
-->
<property name="yuicompressor.jar"
           value="C:/devlibs/yuicompressor-2.2.4/build/yuicompressor-2.2.4.jar"/>

<target name="js.compress">
    <!-- Create min directory under js direcrtory if it doesnt exist -->
    <mkdir dir="${js-directory}/min" />

    <apply verbose="true" executable="java" parallel="false" failonerror="true">
        <fileset dir="${js-directory}" includes="*.js"/>
        <arg line="-jar"/>
        <arg path="${yuicompressor.jar}"/>
        <srcfile/>
        <arg line="-o"/>
        <mapper type="glob" from="*.js" to="${js-directory}/min/*-min.js"/>
        <targetfile/>
    </apply>
</target>
de

Dean Edward packer atinge algumas proporções muito bom de compressão. Ele tem implementações de linha de comando que permite que ele seja usado em um processo de integração contínua.

UglifyJS é um novo.

UglifyJS comprime melhor do que YUI Compressor e praticamente a par com o Closure Compiler Google. Para exemplo, a versão compactada do jQuery do Google Closure Compilador é de apenas 403 bytes menor do que a versão produzida por UglifyJS - impressionante! UglifyJS é também o mais rápido a correr por um longo tiro, espancamento Encerramento por mais de 6 segundos!

Além disso, o código produzido por UglifyJS é mais seguro do que o código que Encerramento gera. Por exemplo, O fechamento não sabe como lidar com eval ou com {} - ele só registra um erro e continua a mudar o nome de variáveis de qualquer forma. Isto, obviamente, leva a código quebrado. não UglifyJS não tem este problema.

Mais informação pode ser encontrada aqui: http://badassjs.com/post / 971960912 / uglifyjs-a-fast-new-javascript-compressor-para-nó-js

do Google ferramentas

Você pode mapear a versão minified ao código fonte regular para depurar no Firebug com o add-on.

Eu tentei compressor YUI antes, mas dá-me mensagem de erro.

Eu sugiro usar JSMin para apoucar o seu javascript:

http://www.crockford.com/javascript/jsmin.html

Aqui está uma solução da Microsoft que você pode integrar em Visual Studio para apoucar os arquivos automaticamente quando você construir seu projeto.

Para instalar:

Faça o download do msi a partir de: http://aspnet.codeplex.com/releases/view/40584

Pode ser necessário reiniciar o computador após o seu final.

Para Uso:

Editar seu arquivo csproj e incluem o seguinte no final do arquivo (mas antes da tag </Project>):

<Import Project="$(MSBuildExtensionsPath)\Microsoft\MicrosoftAjax\ajaxmin.tasks" />

<Target Name="AfterBuild">
    <ItemGroup>
        <JS Include="**\*.js" Exclude="**\*.min.js;Scripts\*.js" />
        <CSS Include="**\*.css" Exclude="**\*.min.css" />
    </ItemGroup>
    <AjaxMin 
    JsSourceFiles="@(JS)"
    JsSourceExtensionPattern="\.js$"
    JsTargetExtension=".min.js"
    CssSourceFiles="@(CSS)"
    CssSourceExtensionPattern="\.css$"
    CssTargetExtension=".min.css"/>
</Target>

Agora, quando você construir seu projeto, todos os arquivos CSS e JS que não terminam em .min.js, .min.css será minified (Veja o atributo "Excluir" para excluir outros arquivos de ser minified).

http://code.google.com/p/jsmin-php/

O bom e velho Doug Crockford :-) A beleza disto é que, com controle de cache você pode obter compressão somelovely automatizado somente quando for necessário. Ou em um dos meus projetos eu só saída dos / arquivos gzipped compactados e excluí-los quando eu fazer uma mudança. Para um ambiente de desenvolvimento, eu apenas não' chamar o script minification.

Eu uso um simples (3-4 linha) invólucro roteiro torno JavaScript :: Minifier :: XS .

Aqui está um artigo que descrevia como usar YUI Compressor para minimizar arquivos durante a compilação: arquivos de compactação de JS como parte de seu processo de construção

Eu uso do Perl JavaScript :: Minifier. Ele funciona muito bem e você pode, por exemplo, substituir algumas frases usando perl.

http://caja.appspot.com/tools/index faz todos os três de HTML / CSS / JS.

https://jawr.dev.java.net/ é excelente para minification e controle de versão

Há um muito bom compressor on-line:

http://javascriptcompressor.com/

Você também pode encolher variáveis, se você quiser ainda mais compresed.

Hope isso ajuda

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