Referencia de la API del servicio de compilador de Closure

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 o code_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, como alert('hello').

El parámetro code_url debe contener la URL de un archivo JavaScript. Puedes incluir varios parámetros code_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ámetro output_info con un valor de compiled_code en la solicitud. De manera similar, la sección statistics solo aparece si incluyes un parámetro output_info con un valor de statistics.

Si incluyes un parámetro output_info con un valor de warnings y el compilador produce una advertencia, el resultado incluirá una etiqueta warnings:

        <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 de errors, el servicio de Closure Compiler incluirá una etiqueta errors si tu código contiene un error de sintaxis o algún otro problema que impida la compilación. La etiqueta errors 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 y col de las etiquetas error y warning 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 el output_info incluye compiled_code, el texto contiene JavaScript. Si el output_info incluye warnings, el texto contiene mensajes de advertencia. Si el output_info incluye statistics, el texto contendrá estadísticas.

El valor predeterminado del parámetro output_format es text.

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ámetro js_externs solo tiene efecto si usas un compilation_level de ADVANCED_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ámetro externs_url solo tiene efecto si usas un compilation_level de ADVANCED_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ámetro exclude_default_externs con un valor de true.

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ámetros formatting en la misma solicitud.

use_closure_library

Si le asignas al parámetro use_closure_library un valor de true, el compilador buscará declaraciones goog.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ón goog.require().

El valor predeterminado del parámetro use_closure_library es false.

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 errorMensaje de errorSignificado
2Modo de salida desconocidoEl valor del parámetro output_format es diferente de xml, json o text.
4Nivel de compresión desconocido.El valor del parámetro compilation_level es diferente de WHITESPACE_ONLY, SIMPLE_OPTIMIZATIONS o ADVANCED_OPTIMIZATIONS.
8Los 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.
9El 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.
10No 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.
12La 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.
13No se produjo información de salida, pero se solicitó compilación. No se especificó ningún parámetro output_info.
14Valor de output_info desconocidoEl valor de un parámetro output_info es diferente de compiled_code, warnings o statistics.
16Nivel de advertencia desconocidoEl valor del parámetro warning_level no es QUIET, DEFAULT ni VERBOSE.
17Opción de formato desconocidaEl valor del parámetro formatting no es pretty_print.
18Parámetro desconocido en la solicitud HTTPLa solicitud HTTP contiene un parámetro distinto de uno de los enumerados en este documento.
19Valor 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 (..)
22Se 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.
23Excepción del compilador (con backtrace) El compilador falló. El texto del error contendrá información para ayudar a Google a depurar el problema.
24Tipo de recurso de entrada no admitido El tipo de recurso no es http, por lo que el archivo de entrada no se recuperará.