El servicio de compilador para cierres está obsoleto y se quitará. En su lugar, considera ejecutar el compilador de forma local.
Descripción general
Para solicitar código compilado, o bien otra información desde el servicio de Closure Compiler, debes enviar una solicitud HTTP POST a la URL https://closure-compiler.appspot.com/compile
. El cuerpo de la solicitud debe contener los parámetros enumerados en Parámetros de solicitud obligatorios y, también, puede contener cualquiera de los parámetros opcionales enumerados en Parámetros de solicitud opcionales.
Cuando sea posible, esta página consulta la documentación canónica de las opciones de línea de comandos en Marcas y opciones. Las opciones de línea de comandos que no están disponibles en el servicio web no se documentan aquí. Algunos parámetros de solicitud tampoco están disponibles en la línea de comandos o tienen un nombre diferente.
Si el servidor no puede procesar tu solicitud, recibirás un mensaje de error del servidor. Estos mensajes se describen en la sección Mensajes de error.
Parámetros de la solicitud
Parámetros obligatorios de solicitud
js_code
ocode_url
-
El JavaScript que se compilará. Debes incluir al menos uno de estos parámetros y puedes incluirlos.
El parámetro
js_code
debe ser una string que contenga JavaScript, comoalert('hello')
.El parámetro
code_url
debe contener la URL de un archivo JavaScript. Puedes incluir varios parámetroscode_url
para especificar varios archivos de entrada. compilation_level
-
Consulta la documentación para
compilation_level
en Marcas y opciones. output_format
- El formato para el resultado del servicio de Closure Compiler. Existen tres formatos de salida posibles:
xml
-
El formato de salida
xml
une la información solicitada en un XML válido.El resultado de XML se verá así:
<compilationResult> <compiledCode>var a="hello";alert(a);</compiledCode> <statistics> <originalSize>98</originalSize> <compressedSize>35</compressedSize> <compileTime>0</compileTime> </statistics> </compilationResult>
La sección
compiledCode
contiene el JavaScript comprimido que produjo el servicio de Closure Compiler. Esta sección solo aparece si incluyes un parámetrooutput_info
con un valor decompiled_code
en la solicitud. De manera similar, la secciónstatistics
solo aparece si incluyes un parámetrooutput_info
con un valor destatistics
.Si incluyes un parámetro
output_info
con un valor dewarnings
y el compilador produce una advertencia, el resultado incluirá una etiquetawarnings
:<compilationResult> ... <warnings> <warning type="JSC_NO_SIDE_EFFECT" file="default.js" lineno="12" charno="3" line="delete 1;">warning 1</warning> <warning type="JSC_UNUSED_VAR" file="default.js" lineno="13" charno="13" line="delete 1;">warning 2 </warning> </warnings> ... </compilationResult>
Si incluyes un
output_info
con un valor deerrors
, el servicio de Closure Compiler incluirá una etiquetaerrors
si tu código contiene un error de sintaxis o algún otro problema que impida la compilación. La etiquetaerrors
se ve así:<compilationResult> ... <errors> <error type="JSC_NO_SIDE_EFFECT" file="default.js" lineno="12" charno="3" line="var x=-'hello';">error 1 </error> <error type="JSC_UNUSED_VAR" file="default.js" lineno="13" charno="13" line="var x=-'hello'">error 2 </error> </errors> ... </compilationResult>
Los atributos
file
,line
ycol
de las etiquetaserror
ywarning
indican dónde se produjo el error en el servicio de Closure Compiler.Si el servicio de Closure Compiler encuentra un error que impide el procesamiento de tu entrada, el resultado se ve de la siguiente manera:
<compilationResult> <serverErrors> <error code="1">Over quota</error> </serverErrors> </compilationResult>
json
-
El formato de salida
json
une la información solicitada en una string de notación de objetos (JSON) de JavaScript. La evaluación de esta string como JavaScript muestra un objeto JavaScript.El resultado de JSON se ve de la siguiente manera:
{ "compiledCode":/* raw code here */, {"errors": [ {"charno":4321, "error":"ERROR: You failed.", "lineno":1234, "file":"default.js", "type":"ERROR_TYPE", "line":"var x=-'hello';"}], "warnings": [ {"charno":4321, "lineno":1234, "file":"default.js", "type":"ERROR_TYPE", "warning":"Warning: You did something wrong!", "line":"delete 1;"}] "serverErrors":[ {"code":123,"error":"Over quota"} ], "statistics":{ "originalSize":10, "compressedSize":3000 "compileTime":10 } }
El formato JSON es similar al formato XML: cada etiqueta en el resultado XML corresponde a una propiedad con el mismo nombre en el objeto JSON.
text
-
El formato de salida
text
muestra texto sin formato sin etiquetas ni corchetes JSON. Si eloutput_info
incluyecompiled_code
, el texto contiene JavaScript. Si eloutput_info
incluyewarnings
, el texto contiene mensajes de advertencia. Si eloutput_info
incluyestatistics
, el texto contendrá estadísticas.
El valor predeterminado del parámetro
output_format
estext
. output_info
-
Indica el tipo de resultado que deseas del compilador. Hay cuatro tipos de resultados posibles:
compiled_code
- Es una versión comprimida y optimizada de tu JavaScript de entrada.
warnings
- Mensajes que indican posibles errores en JavaScript
errors
- Mensajes que indican errores de sintaxis o errores de JavaScript.
statistics
-
Información sobre el grado de compresión que alcanza el compilador de Closure. Para el resultado de XML, el servicio de Closure Compiler muestra estadísticas en el siguiente formato:
<compilationResult> ... <statistics> <firstStatisticName>24</firstStatisticName> <secondStatisticName>15</secondStatisticName> </statistics> </compilationResult>
Parámetros opcionales de solicitud
js_externs
-
El valor de este parámetro debe ser un código JavaScript que declare los nombres de las funciones y otros símbolos. Usa
js_externs
para preservar los símbolos que se definen fuera del código que estás compilando. El parámetrojs_externs
solo tiene efecto si usas uncompilation_level
deADVANCED_OPTIMIZATIONS
. Consulta Compilación avanzada para obtener más información. externs_url
-
El valor de este parámetro debe ser la URL de un archivo que contenga JavaScript que declare nombres de funciones u otros símbolos. Los símbolos declarados en este archivo se conservan de la misma manera que los símbolos enumerados directamente en el parámetro
js_externs
. El parámetroexterns_url
solo tiene efecto si usas uncompilation_level
deADVANCED_OPTIMIZATIONS
. Consulta Compilación avanzada para obtener más información.Puedes especificar este parámetro varias veces si tienes varios archivos de externs.
exclude_default_externs
-
De forma predeterminada, el servicio de Closure Compiler usa un archivo de externs estándar que declara símbolos definidos externamente comunes como
document
y todos sus métodos. Si NO quieres usar estos externalizados comunes, incluye en tu solicitud un parámetroexclude_default_externs
con un valor detrue
.Consulta Compilación avanzada y elementos externos para obtener más información sobre los elementos externos.
output_file_name
-
Si está presente, el servicio de Closure Compiler almacena en caché el código compilado durante una hora y lo pone a disposición mediante una URL especial. Durante esta hora, puedes probar el código compilado apuntando tu navegador hacia esta URL. La URL tiene el siguiente formato:
https://closure-compiler.appspot.com/code/bf067f356d510e1c7b81347eb84f65d2/[value of output_file_name]
formatting
-
Consulta la documentación para
formatting
en Marcas y opciones. Puedes proporcionar varios parámetrosformatting
en la misma solicitud. -
use_closure_library
-
Si le asignas al parámetro
use_closure_library
un valor detrue
, el compilador buscará declaracionesgoog.require()
en el código fuente y proporcionará el código de la biblioteca para cierres que solicita cualquiera de esas declaraciones. También realiza optimizaciones diseñadas específicamente para el código de la biblioteca de cortes viales. Consulta la documentación sobre la biblioteca de cierres para obtener más información al respecto. Consulta Cómo navegar por la biblioteca de cierres para obtener más información sobre la funcióngoog.require()
.El valor predeterminado del parámetro
use_closure_library
esfalse
. warning_level
-
Consulta la documentación para
warning_level
en Marcas y opciones. -
language
-
Consulta la documentación para ver la opción
language_in
equivalente en Marcas y opciones. -
language_out
-
Consulta la documentación para
language_out
en Marcas y opciones. -
rewrite_polyfills
-
Consulta la documentación para
rewrite_polyfills
en Marcas y opciones. -
use_types_for_optimization
-
Consulta la documentación para
use_types_for_optimization
en Marcas y opciones.
Mensajes de error
Si el servidor no puede procesar tu solicitud, recibirás uno de los mensajes de error del servidor que se enumeran en la tabla a continuación. Ten en cuenta que estos mensajes de error del servidor son diferentes de los errores y las advertencias del compilador. Los errores y las advertencias del compilador indican que Closure Compiler encontró un problema en tu código JavaScript. Los mensajes de error del servidor indican que el compilador no puede procesar tu código en absoluto debido a un error en tu solicitud.
Código de error | Mensaje de error | Significado |
---|---|---|
2 | Modo de salida desconocido | El valor del parámetro output_format es diferente de xml , json o text . |
4 | Nivel de compresión desconocido. | El valor del parámetro compilation_level es diferente de WHITESPACE_ONLY , SIMPLE_OPTIMIZATIONS o ADVANCED_OPTIMIZATIONS . |
8 | Los datos de POST son demasiado grandes. |
El tamaño de los datos que enviaste al servicio de Closure Compiler supera los 200,000 bytes. Tanto la IU del servicio de compilador como las llamadas a la API usan una solicitud HTTP POST para comunicarse con el servicio, y la cantidad total de datos enviados en esta solicitud no puede exceder los 200,000 bytes. Para las llamadas a la API, este límite se aplica a la cantidad total de texto en todos los parámetros de solicitud. En la IU del compilador de Closure, este límite se aplica a la cantidad total de texto en el código fuente y en las opciones del compilador, como @code_url . Si tu solicitud es demasiado grande, mueve el código fuente a archivos separados y haz referencia a ellos mediante @code_url , o usa la aplicación de Closure Compiler en tu máquina local.
|
9 | El archivo es demasiado grande. | La cantidad total de código de los code_url archivos, todos los archivos externs_url , el código js_code y el código js_externs supera los 1024,000 bytes. |
10 | No se puede recuperar contenido de URL. | Se produjo un error cuando el servicio de Closure Compiler intentó recuperar un archivo JavaScript indicado en el parámetro code_url o un archivo externo que se indica en el parámetro externs_url . Comprueba que la URL sea correcta y que los permisos del archivo permitan su visualización. |
12 | La URL no tiene el formato correcto. | El valor del parámetro code_url o del parámetro externs_url no es una URL con el formato correcto. |
13 | No se produjo información de salida, pero se solicitó compilación. | No se especificó ningún parámetro output_info . |
14 | Valor de output_info desconocido | El valor de un parámetro output_info es diferente de compiled_code , warnings o statistics . |
16 | Nivel de advertencia desconocido | El valor del parámetro warning_level no es QUIET , DEFAULT ni VERBOSE . |
17 | Opción de formato desconocida | El valor del parámetro formatting no es pretty_print . |
18 | Parámetro desconocido en la solicitud HTTP | La solicitud HTTP contiene un parámetro distinto de uno de los enumerados en este documento. |
19 | Valor ilegal para output_file_name | El nombre del archivo de salida contiene un carácter (un número, una letra, un punto, un guion bajo o un guion) o contiene dos puntos consecutivos (.. ) |
22 | Se realizaron demasiadas compilaciones recientemente. Vuelve a intentarlo más tarde. | Enviaste demasiadas compilaciones desde tu máquina. Después de una hora, deberías poder volver a realizar compilaciones. |
23 | Excepción del compilador (con backtrace) | El compilador falló. El texto del error contendrá información para ayudar a Google a depurar el problema. |
24 | Tipo de recurso de entrada no admitido | El tipo de recurso no es http, por lo que el archivo de entrada no se recuperará. |