Preguntas frecuentes
Organiza tus páginas con colecciones
Guarda y categoriza el contenido según tus preferencias.
-
¿Qué es el compilador de Closure? ¿Por qué debería usarla?
-
El compilador de Closure es una herramienta para que JavaScript se descargue y
se ejecute más rápido. Puedes usar el compilador de Closure para reducir el tamaño de tus archivos JavaScript y hacerlos más eficientes.
-
¿En qué se diferencia el Closure Compiler de los otros compresores de JavaScript disponibles?
-
En general, el compilador de Closure debería igualar o superar la compresión de otras herramientas de minimización de código y mejorar los tiempos de descarga de tu aplicación web. Además, el compilador de Closure puede ayudarte a encontrar errores de sintaxis durante el desarrollo (en lugar de durante las pruebas) y a identificar patrones de código potencialmente defectuosos.
En el modo Simple, Closure Compiler debería poder hacerlo mejor que otras herramientas, ya que usa un análisis similar al de un compilador para encontrar formas adicionales de minimizar el tamaño del código. Por ejemplo, el compilador de Closure puede insertar funciones que se usan en pocas ocasiones, reutilizar nombres de variables y precalcular expresiones constantes.
En el modo avanzado, el compilador de Closure también puede usar las anotaciones de tipo que agregaste para encontrar errores difíciles de detectar.
-
¿Puede el compilador de Closure compilar JavaScript incorporado en HTML?
-
No. El compilador de Closure solo funciona en archivos que contienen JavaScript.
-
¿Puedo usar el compilador de Closure junto con otros reductores de JavaScript?
-
Sí. El compilador de Closure lee cualquier código JavaScript válido y genera código JavaScript válido, por lo que puedes aplicar el compilador de Closure a un archivo JavaScript antes o después de ejecutar el archivo a través de un minificador diferente.
Recuerda que Closure Compiler y otros minificadores pueden tener expectativas sobre el código entrante. Por ejemplo, un minificador que quita comentarios puede quitar licencias o información de anotaciones que necesita otra herramienta.
-
¿Cómo puedo depurar el código JavaScript que produce el compilador de Closure?
-
Si tu código compilado arroja errores o muestra un comportamiento inesperado,
puedes usar mapas de origen para depurar el problema. Un mapa de origen proporciona una asignación entre el código compilado y el código fuente original para que las herramientas para desarrolladores del navegador puedan mostrarte tu código fuente original en lugar del código compilado.
Para que Closure Compiler genere un mapa de origen, pasa la marca
--create_source_map
en la línea de comandos. Por ejemplo:
$ java -jar compiler.jar --js example.js --create_source_map ./example-map --js_output_file example-compiled.js
Luego, si usas un navegador que admite mapas de origen (como Chrome
o Firefox), puedes establecer puntos de interrupción como lo harías para el código sin compilar,
y las herramientas para desarrolladores del navegador mostrarán la línea de código correspondiente
en el código fuente original. Para obtener más información sobre las herramientas para desarrolladores de Chrome, incluida la información sobre los mapas de origen, consulta Cómo depurar JavaScript.
-
¿El compilador realiza alguna compensación entre la velocidad de ejecución de mi aplicación y el tamaño del código de descarga?
- Sí. Cualquier compilador de optimización realiza compensaciones. Algunas optimizaciones de tamaño introducen pequeñas sobrecargas de velocidad. Sin embargo, los desarrolladores del compilador de Closure se aseguraron de no introducir un tiempo de ejecución adicional significativo. Algunas de las optimizaciones del compilador incluso reducen el tiempo de ejecución (consulta la siguiente pregunta).
-
¿El compilador optimiza la velocidad?
-
En la mayoría de los casos, el código más pequeño es más rápido, ya que el tiempo de descarga suele ser el factor de velocidad más importante en las aplicaciones web. Las optimizaciones que reducen las redundancias también aceleran el tiempo de ejecución del código.
-
¿Hay restricciones sobre el tamaño de los archivos que se pueden compilar?
-
El servicio web de compilación tiene un tamaño máximo de archivo, pero la
aplicación de compilador independiente no.
-
¿El compilador de cierre está disponible para todas las plataformas?
-
El compilador está escrito en Java, por lo que se puede ejecutar en cualquier lugar donde se ejecute Java.
-
¿Puede el compilador procesar cualquier código JavaScript válido?
-
Casi siempre. Algunas construcciones de JavaScript, incluidas
eval()
y with()
, pueden invalidar las suposiciones en las que se basan las transformaciones del compilador.
-
¿Cuánto necesito saber sobre desarrollo web para usar el Closure Compiler?
-
El compilador de Closure es una herramienta para el desarrollo de JavaScript, por lo que
debes saber programar en JavaScript para usar el
compilador. Sin embargo, cualquier persona que use JavaScript puede beneficiarse del uso del compilador de Closure.
-
¿Cómo funciona el compilador de Closure con la biblioteca de Closure?
-
El compilador de Closure proporciona verificaciones y optimizaciones especiales para
el código que usa la biblioteca de Closure. Además, el servicio de Closure Compiler puede incluir automáticamente archivos de la biblioteca de Closure. Cómo encontrar tu camino en Closure describe la sintaxis para declarar las partes de Closure que necesitas. Consulta la referencia de la API para obtener información sobre el uso de la Biblioteca de Closure con la API. Para usar la biblioteca de Closure con la aplicación del compilador de Closure, primero debes descargar la biblioteca de Closure. La compatibilidad con la biblioteca de Closure está habilitada de forma predeterminada en la aplicación del compilador.
-
Mi código deja de funcionar o el compilador produce errores cuando compilo con
ADVANCED_OPTIMIZATIONS
. ¿Por qué?
-
Por lo general, usar el modo avanzado requiere cierta preparación y cambios en el código. Advanced Compilation and Externs explica cómo asegurarte de que tu código funcione con
ADVANCED_OPTIMIZATIONS
.
-
¿Por qué hay avances de línea aleatorios en las secuencias de comandos compiladas?
-
El compilador de Closure agrega intencionalmente saltos de línea cada 500
caracteres aproximadamente. A veces, los firewalls y los proxies dañan o
ignoran los archivos JavaScript grandes con líneas muy largas. Agregar saltos de línea cada 500 caracteres evita este problema. Quitar los saltos de línea no afecta la semántica de una secuencia de comandos. El impacto en el tamaño del código es pequeño, y el compilador optimiza la ubicación de los saltos de línea para que la penalización del tamaño del código sea aún menor cuando los archivos se comprimen con gzip.
-
Tengo avisos de derechos de autor o texto de licencia de código abierto que deben aparecer en mi código fuente. ¿Cómo evito que el compilador de cierre quite este texto?
-
El compilador de Closure admite la etiqueta
@license
de JSDoc. Agrega la etiqueta @license
a cualquier comentario de JSDoc para conservar el comentario en el resultado del compilador. Consulta Cómo anotar JavaScript para el compilador de Closure para obtener más información.
Salvo que se indique lo contrario, el contenido de esta página está sujeto a la licencia Atribución 4.0 de Creative Commons, y los ejemplos de código están sujetos a la licencia Apache 2.0. Para obtener más información, consulta las políticas del sitio de Google Developers. Java es una marca registrada de Oracle o sus afiliados.
Última actualización: 2025-07-26 (UTC)
[[["Fácil de comprender","easyToUnderstand","thumb-up"],["Resolvió mi problema","solvedMyProblem","thumb-up"],["Otro","otherUp","thumb-up"]],[["Falta la información que necesito","missingTheInformationINeed","thumb-down"],["Muy complicado o demasiados pasos","tooComplicatedTooManySteps","thumb-down"],["Desactualizado","outOfDate","thumb-down"],["Problema de traducción","translationIssue","thumb-down"],["Problema con las muestras o los códigos","samplesCodeIssue","thumb-down"],["Otro","otherDown","thumb-down"]],["Última actualización: 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."]]