Perguntas frequentes
Mantenha tudo organizado com as coleções
Salve e categorize o conteúdo com base nas suas preferências.
-
O que é o Closure Compiler? Por que usar?
-
O Closure Compiler é uma ferramenta para fazer o download e a
execução do JavaScript mais rápidos. É possível usar o Closure Compiler para reduzir o tamanho dos
arquivos JavaScript e torná-los mais eficientes.
-
How is the Closure Compiler different from the other JavaScript
compressors that are out there?
-
Em geral, o Closure Compiler atende ou excede a compactação de outras ferramentas de minimização de código e melhora os tempos de download do seu aplicativo da Web. Além disso, o Closure Compiler ajuda a
encontrar erros de sintaxe durante o desenvolvimento (em vez de durante o teste)
e identificar padrões de código potencialmente com bugs.
No modo simples, o Closure Compiler consegue ter um desempenho melhor do que outras ferramentas porque usa uma análise semelhante à do compilador para encontrar outras maneiras de minimizar o tamanho do código. Por exemplo, o Closure Compiler pode
inserir funções usadas em apenas algumas ocorrências, reutilizar
nomes de variáveis e pré-calcular expressões constantes.
No modo avançado, o Closure Compiler também pode usar as anotações de tipo adicionadas para encontrar bugs difíceis de detectar.
-
O Closure Compiler pode compilar JavaScript incorporado em HTML?
-
Não. O Closure Compiler funciona apenas em arquivos que contêm JavaScript.
-
Posso usar o Closure Compiler com outros minificadores de JavaScript?
-
Sim. O Closure Compiler lê qualquer JavaScript válido e gera
JavaScript válido. Portanto, é possível aplicar o Closure Compiler a um
arquivo JavaScript antes ou depois de executar o arquivo em um
minificador diferente.
Lembre-se de que o Closure Compiler e outros minificadores podem ter
expectativas sobre o código recebido. Um minificador que remove
comentários pode remover licenças ou informações de anotação necessárias para
outra ferramenta, por exemplo.
-
Como posso depurar o JavaScript produzido pelo Closure Compiler?
-
Se o código compilado estiver gerando erros ou apresentando um comportamento inesperado,
use mapas de origem para depurar o problema. Um mapa de origem fornece um mapeamento
entre o código compilado e o código-fonte original para que as ferramentas
de desenvolvedor do navegador mostrem o código-fonte original em vez do compilado.
Para que o Closure Compiler produza um mapa de origem, transmita a flag
--create_source_map
na linha de comando. Exemplo:
$ java -jar compiler.jar --js example.js --create_source_map ./example-map --js_output_file example-compiled.js
Em seguida, se você estiver usando um navegador que oferece suporte a mapas de origem (como Chrome
ou Firefox), poderá definir pontos de interrupção da mesma forma que faria para código não compilado.
As ferramentas para desenvolvedores do navegador vão mostrar a linha de código correspondente
na origem original. Para mais informações sobre as ferramentas para desenvolvedores do Chrome, incluindo
informações sobre mapas de origem, consulte
Depuração de JavaScript.
-
O compilador faz alguma compensação entre a velocidade de execução do meu aplicativo e o tamanho do código de download?
-
Sim. Qualquer compilador de otimização faz concessões. Algumas otimizações de tamanho introduzem pequenas sobrecargas de velocidade. No entanto, os desenvolvedores do Closure Compiler tiveram cuidado para não introduzir um tempo de execução adicional significativo. Algumas das otimizações do compilador até diminuem o tempo de execução (consulte a próxima pergunta).
-
O compilador otimiza para velocidade?
-
Na maioria dos casos, um código menor é mais rápido, já que o tempo de download geralmente é o fator de velocidade mais importante em aplicativos da Web. As otimizações que
reduzem redundâncias também aceleram o tempo de execução do código.
-
Há alguma restrição no tamanho dos arquivos que podem ser compilados?
-
O serviço da Web de compilação tem um tamanho máximo de arquivo, mas o
aplicativo compilador independente não tem.
-
O Closure Compiler está disponível para todas as plataformas?
-
O compilador é escrito em Java, então pode ser executado em qualquer lugar em que o Java é executado.
-
O compilador pode processar qualquer JavaScript válido?
-
Na maioria das vezes. Alguns elementos do JavaScript, incluindo
eval()
e with()
, podem invalidar as proposições em que as
transformações do compilador se baseiam.
-
Quanto preciso saber sobre desenvolvimento da Web para usar o Closure Compiler?
-
O Closure Compiler é uma ferramenta para desenvolvimento em JavaScript. Portanto, você
precisa saber como programar em JavaScript para usar o
compilador. Mas qualquer pessoa que usa JavaScript pode se beneficiar do uso do Closure Compiler.
-
Como o Closure Compiler funciona com a Closure Library?
-
O Closure Compiler oferece verificações e otimizações especiais para
código que usa a biblioteca Closure. Além disso, o serviço do Closure Compiler pode incluir automaticamente arquivos da Closure Library. Como encontrar o que você precisa no Closure descreve a sintaxe para declarar as partes do Closure que você precisa. Consulte a referência da API para informações sobre como usar a biblioteca Closure com a API. Para usar a Closure Library com o aplicativo Closure Compiler, primeiro faça o download da Closure Library. O suporte à Closure Library é
ativado por padrão no aplicativo compilador.
-
Meu código para de funcionar ou o compilador produz erros quando faço a
compilação com
ADVANCED_OPTIMIZATIONS
. Por quê?
-
O uso do modo avançado geralmente exige alguma preparação e mudanças
no código. Compilação avançada e externs explica como garantir que seu código funcione com
ADVANCED_OPTIMIZATIONS
.
-
Por que há feeds de linha aleatórios em scripts compilados?
-
O Closure Compiler adiciona quebras de linha intencionalmente a cada 500
caracteres, aproximadamente. Firewalls e proxies às vezes corrompem ou
ignoram arquivos JavaScript grandes com linhas muito longas. Adicionar quebras de linha a cada 500 caracteres evita esse problema. Remover as quebras de linha não afeta a semântica de um script. O impacto no tamanho do código é pequeno, e o compilador
otimiza o posicionamento da quebra de linha para que a penalidade de tamanho do código seja ainda menor quando os arquivos são compactados com gzip.
-
Tenho avisos de direitos autorais ou texto de licença de código aberto que precisam aparecer no meu código-fonte. Como faço para impedir que o
Closure Compiler remova esse texto?
-
O Closure Compiler é compatível com a tag
@license
do JSDoc. Adicione a tag
@license
a qualquer comentário do JSDoc para preservar o
comentário na saída do
compilador. Consulte Anotar
JavaScript para o Closure Compiler para mais informações.
Exceto em caso de indicação contrária, o conteúdo desta página é licenciado de acordo com a Licença de atribuição 4.0 do Creative Commons, e as amostras de código são licenciadas de acordo com a Licença Apache 2.0. Para mais detalhes, consulte as políticas do site do Google Developers. Java é uma marca registrada da Oracle e/ou afiliadas.
Última atualização 2025-07-26 UTC.
[null,null,["Última atualização 2025-07-26 UTC."],[[["\u003cp\u003eThe Closure Compiler is a tool for making JavaScript download and run faster by reducing file size and improving efficiency.\u003c/p\u003e\n"],["\u003cp\u003eIt offers greater compression than standard minifiers and helps identify syntax errors and potential bugs during development.\u003c/p\u003e\n"],["\u003cp\u003eThe Closure Compiler works with any valid JavaScript and can be used alongside other minifiers for enhanced optimization.\u003c/p\u003e\n"],["\u003cp\u003eSource maps enable debugging of compiled code by providing a mapping back to the original source.\u003c/p\u003e\n"],["\u003cp\u003eWhile prioritizing download speed, the compiler also performs optimizations to enhance execution speed without significant runtime overhead.\u003c/p\u003e\n"]]],[],null,["# Frequently Asked Questions\n\n- [What is the Closure Compiler? Why should I use it?](#what)\n- [How is the Closure Compiler different\n from the other JavaScript compressors that are out there?](#how-different)\n- [Can the Closure Compiler compile JavaScript that's embedded in HTML?](#tags)\n- [Can I use the Closure Compiler together with other JavaScript\n minifiers?](#other-minifiers)\n- [How can I debug the JavaScript that the Closure Compiler produces?](#sourcemaps)\n- [Does the compiler make any trade-off between my application's\n execution speed and download code size?](#tradeoffs)\n- [Does the compiler optimize for speed?](#speed)\n- [Are there any restrictions on the size of the files that can be compiled?](#size-restrictions)\n- [Is the Closure Compiler available for all platforms?](#platforms)\n- [Can the Compiler process any legal JavaScript?](#restrictions)\n- [How does the Closure Compiler work with\n the Closure Library?](#how-closure)\n- [My code stops working or the Compiler produces\n errors when I compile\n with `ADVANCED_OPTIMIZATIONS`. Why?](#advanced)\n- [Why are there random line feeds in\n compiled scripts?](#linefeeds)\n- [I have copyright notices or open source license\n text that must appear in my source code. How do I keep the Closure\n Compiler from stripping this text out?](#license)\n\n\u003cbr /\u003e\n\n\u003cbr /\u003e\n\n\nWhat is the Closure Compiler? Why should I use it?\n:\n The Closure Compiler is a tool for making JavaScript download and\n run faster. You can use the Closure Compiler to reduce the size of\n your JavaScript files and to make them more efficient.\n\n\nHow is the Closure Compiler different from the other JavaScript\ncompressors that are out there?\n\n: Generally, the Closure Compiler should meet or exceed the compression\n of other code minification tools, and improve download times for your\n web application. In addition, the Closure Compiler can help you\n find syntax errors during development (rather than during testing)\n and identify potentially buggy code patterns.\n\n In Simple mode, Closure Compiler should be able to do better than\n other tools because it uses compiler-like analysis to find additional\n ways to minimize code size. For example, the Closure Compiler can\n inline functions that are used in only a few occurrences, reuse\n variable names, and pre-compute constant expressions.\n\n In Advanced mode, Closure Compiler can also use your added type\n annotations to find hard-to-spot bugs.\n\n\nCan the Closure Compiler compile JavaScript that's embedded in HTML?\n:\n No. The Closure Compiler works only on files that contain only JavaScript.\n\n\nCan I use the Closure Compiler together with other JavaScript\nminifiers?\n\n: Yes. Closure Compiler reads in any valid JavaScript and generates\n valid JavaScript, so you can apply the Closure Compiler to a\n JavaScript file either before or after you run the file through a\n different minifier.\n\n Remember that Closure Compiler and other minifiers might have\n expectations about the incoming code. A minifier that strips\n comments may remove licenses or annotation information needed by\n another tool, for example.\n\n\nHow can I debug the JavaScript that the Closure Compiler produces?\n:\n If your compiled code is throwing errors or exhibiting unexpected behavior,\n you can use Source Maps to debug the issue. A source map provides a mapping\n between the compiled code and the original source code so that the browser's\n developer tools can show you your original source code instead of the compiled code.\n To make the Closure Compiler produce a source map, pass the\n `--create_source_map` flag on the command line. For example: \n\n ```\n $ java -jar compiler.jar --js example.js --create_source_map ./example-map --js_output_file example-compiled.js\n ```\n\n Then, if you're using a browser that supports Source Maps (such as Chrome\n or Firefox), you can set breakpoints just as you would for uncompiled code,\n and the browser's developer tools will show the corresponding line of code\n in the original source. For more information about Chrome's developer tools, including\n information about source maps, see\n [Debugging JavaScript](https://developers.google.com/chrome-developer-tools/docs/javascript-debugging).\n\n\nDoes the compiler make any trade-off between my application's\nexecution speed and download code size?\n:\n Yes. Any optimizing compiler makes trade-offs. Some size\n optimizations do introduce small speed overheads. However, the\n Closure Compiler's developers have been careful not to introduce\n significant additional runtime. Some of the compiler's\n optimizations even decrease runtime (see next question).\n\n\nDoes the compiler optimize for speed?\n:\n In most cases smaller code is faster code, since download time is usually the most important speed factor in web applications. Optimizations that\n reduce redundancies speed up the run time of code as well.\n\n\nAre there any restrictions on the size of the files that can be compiled?\n:\n The compilation web service has a maximum file size, but the\n standalone compiler application does not.\n\n\nIs the Closure Compiler avalable for all platforms?\n:\n The compiler is written in Java, so it can run anywhere Java runs.\n\n\nCan the Compiler process any legal JavaScript?\n:\n Mostly. Some JavaScript constructs, including `eval()`\n and `with()`, can invalidate assumptions on which the\n compiler's transformations are based.\n\n\nHow much do I need to know about web development to use the\nClosure Compiler?\n:\n The Closure Compiler is a tool for JavaScript development, so you\n do need to know how to program in JavaScript to use the\n compiler. But anyone who uses JavaScript can benefit from using\n the Closure Compiler.\n\n\nHow does the Closure Compiler work with the Closure Library?\n:\n The Closure Compiler provides special checks and optimizations for\n code that uses the Closure Library. In addition, the Closure\n Compiler service can automatically include Closure Library\n files. [Finding\n Your Way around Closure](/closure/library/docs/introduction#deps) describes the syntax for declaring the\n parts of Closure that you need. See\n the [API\n reference](/closure/compiler/docs/api-ref#closure) for information on using the Closure Library with the\n API. To use the Closure Library with the Closure Compiler\n application you must\n first [download\n the Closure Library](https://github.com/google/closure-library). Support for the Closure Library is\n enabled in the compiler application by default.\n\n\nMy code stops working or the Compiler produces errors when I\ncompile with `ADVANCED_OPTIMIZATIONS`. Why?\n:\n Using Advanced mode usually requires some preparation and code\n changes. [Advanced Compilation\n and Externs](/closure/compiler/docs/api-tutorial3) explains how to make sure your code works\n with `ADVANCED_OPTIMIZATIONS`.\n\n\nWhy are there random line feeds in compiled scripts?\n:\n The Closure Compiler intentionally adds line breaks every 500\n characters or so. Firewalls and proxies sometimes corrupt or\n ignore large JavaScript files with very long lines. Adding line\n breaks every 500 characters prevents this problem. Removing the\n line breaks has no effect on a script's semantics. The impact on code size is small, and the Compiler\n optimizes line break placement so that the code size penalty is even smaller when files are gzipped.\n\n\nI have copyright notices or open source\nlicense text that must appear in my source code. How do I keep the\nClosure Compiler from stripping this text out?\n:\n Closure Compiler supports the JSDoc `@license` tag. Add the\n `@license` tag to any JSDoc comment to preserve the\n comment in the compiler\n output. See [Annotating\n JavaScript for the Closure Compiler](/closure/compiler/docs/js-for-compiler#tag-license) for more information."]]