Справочник по API службы компилятора закрытия

Служба компилятора закрытия устарела и будет удалена. Вместо этого рассмотрите возможность локального запуска компилятора.

Обзор

Чтобы запросить скомпилированный код или другую информацию из службы Closure Compiler, необходимо отправить HTTP-запрос POST на URL-адрес https://closure-compiler.appspot.com/compile . Тело запроса должно содержать параметры, перечисленные в Обязательных параметрах запроса , а также может содержать любые необязательные параметры, перечисленные в Необязательные параметры запроса .

Когда это возможно, эта страница ссылается на каноническую документацию по параметрам командной строки в Flags and Options . Параметры командной строки, недоступные в веб-сервисе, здесь не описаны. Некоторые параметры запроса также недоступны в командной строке или имеют другое имя.

Если сервер не сможет обработать ваш запрос, вы получите сообщение об ошибке сервера. Эти сообщения описаны в разделе « Сообщения об ошибках ».

Параметры запроса

Требуемые параметры запроса

js_code или code_url

JavaScript для компиляции. Вы должны включить хотя бы один из этих параметров, а можете включить оба.

Параметр js_code должен быть строкой, содержащей JavaScript, например, alert('hello') .

Параметр code_url должен содержать URL-адрес файла JavaScript. Вы можете включить несколько параметров code_url , чтобы указать несколько входных файлов.

compilation_level

См. документацию для compilation_level во Флаги и параметры .

output_format
Формат выходных данных службы Closure Compiler. Возможны три формата вывода:
xml

Выходной формат xml упаковывает запрошенную информацию в действительный XML.

Вывод XML выглядит следующим образом:

        <compilationResult>
          <compiledCode>var a="hello";alert(a);</compiledCode>
          <statistics>
            <originalSize>98</originalSize>
            <compressedSize>35</compressedSize>
            <compileTime>0</compileTime>
          </statistics>
        </compilationResult>
      

Раздел compiledCode содержит сжатый код JavaScript, созданный службой Closure Compiler. Этот раздел появляется только в том случае, если вы compiled_code в запрос параметр output_info со значениемcompile_code. Точно так же раздел statistics появляется только в том случае, если вы включаете параметр output_info со значением statistics .

Если вы включаете параметр output_info со значением warnings , а компилятор выдает предупреждение, вывод будет включать тег 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>
      

Если вы output_info со значением errors , служба компилятора Closure включит тег errors , если ваш код содержит синтаксическую ошибку или другую проблему, препятствующую компиляции. Тег errors выглядит так:

        <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>
      

Атрибуты file , line и col тегов error и warning указывают, где служба Closure Compiler обнаружила ошибку.

Если служба Closure Compiler обнаруживает ошибку, препятствующую обработке вашего ввода, вывод выглядит следующим образом:

        <compilationResult>
          <serverErrors>
            <error code="1">Over quota</error>
          </serverErrors>
        </compilationResult>
      
json

Выходной формат json упаковывает запрошенную информацию в строку нотации объектов JavaScript (JSON). Оценка этой строки как JavaScript возвращает объект JavaScript.

Вывод JSON выглядит так:

{
"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
  }
}
      

Формат JSON аналогичен формату XML: каждый тег в выводе XML соответствует свойству с тем же именем в объекте JSON.

text
Формат вывода text возвращает необработанный текст без тегов или скобок JSON. Если output_info включает в себя compiled_code , текст содержит JavaScript. Если output_info включает warnings , текст содержит предупреждающие сообщения. Если output_info включает statistics , текст содержит статистику.

Параметр output_format по умолчанию имеет значение text .

output_info

Указывает тип вывода, который вы хотите получить от компилятора. Возможны четыре вида вывода:

compiled_code
Сжатая и оптимизированная версия вашего входного JavaScript.
warnings
Сообщения, указывающие на возможные ошибки в вашем JavaScript.
errors
Сообщения, указывающие на синтаксические ошибки или другие ошибки в вашем JavaScript.
statistics

Информация о степени сжатия, которую достигает Closure Compiler. Для вывода xml служба Closure Compiler возвращает статистику в следующем формате:

        <compilationResult>
          ...
          <statistics>
            <firstStatisticName>24</firstStatisticName>
            <secondStatisticName>15</secondStatisticName>
          </statistics>
        </compilationResult>
      

Необязательные параметры запроса

js_externs

Значение этого параметра должно быть кодом JavaScript, который объявляет имена функций или другие символы. Используйте js_externs для сохранения символов, которые определены вне кода, который вы компилируете. Параметр js_externs только в том случае, если вы используете уровень compilation_level ADVANCED_OPTIMIZATIONS . Дополнительные сведения см. в разделе Расширенная компиляция .

externs_url

Значение этого параметра должно быть URL-адресом файла, содержащего JavaScript, который объявляет имена функций или другие символы. Символы, объявленные в этом файле, сохраняются точно так же, как и символы, перечисленные непосредственно в параметре js_externs . Параметр externs_url только в том случае, если вы используете уровень compilation_level ADVANCED_OPTIMIZATIONS . Дополнительные сведения см. в разделе Расширенная компиляция .

Вы можете указать этот параметр несколько раз, если у вас несколько файлов externs.

exclude_default_externs

По умолчанию служба Closure Compiler использует стандартный файл externs, в котором объявляются общие внешние определенные символы, такие как document и все его методы. Если вы НЕ хотите использовать эти общие экстерны, включите в свой запрос параметр exclude_default_externs со значением true .

Дополнительные сведения о внешних модулях см. в разделе Расширенная компиляция и внешние модули.

output_file_name

Если служба Closure Compiler присутствует, она кэширует скомпилированный код на один час и делает его доступным через специальный URL-адрес. В течение этого часа вы можете протестировать скомпилированный код, указав в браузере этот URL. URL-адрес имеет следующую форму:

https://closure-compiler.appspot.com/code/bf067f356d510e1c7b81347eb84f65d2/[value of output_file_name]
.

formatting

См. документацию по formatting в разделе « Флаги и параметры» . В одном запросе можно указать несколько параметров formatting .

use_closure_library

Если вы присвоите параметру use_closure_library значение true , компилятор ищет goog.require() в исходном коде и предоставляет код библиотеки закрытия, запрошенный любыми такими операторами. Он также выполняет оптимизации, разработанные специально для кода Closure Library. См. документацию по библиотеке замыканий для получения дополнительной информации о библиотеке замыканий. Дополнительную информацию о функции goog.require() см. в разделе Поиск путей в библиотеке замыканий.

Параметр use_closure_library по умолчанию имеет значение false .

warning_level

См. документацию для warning_level в Flags and Options .

language

См. документацию по эквивалентной опции language_in в Flags and Options .

language_out

См. документацию для language_out в Flags and Options .

rewrite_polyfills

См. документацию по rewrite_polyfills в Flags and Options .

use_types_for_optimization

См. документацию по use_types_for_optimization в Flags and Options .

Сообщения об ошибках

Если серверу не удастся обработать ваш запрос, вы получите одно из сообщений об ошибке сервера, перечисленных в таблице ниже. Обратите внимание, что эти сообщения об ошибках сервера отличаются от ошибок и предупреждений компилятора. Ошибки и предупреждения компилятора указывают на то, что Closure Compiler обнаружил проблему в вашем коде JavaScript. Сообщения об ошибках сервера указывают на то, что компилятор вообще не может обработать ваш код из-за ошибки в вашем запросе.

Код ошибки Сообщение об ошибке Значение
2 Неизвестный режим вывода. Значение параметра output_format отличается от xml , json или text .
4 Неизвестный уровень сжатия. Значение параметраcompile_level WHITESPACE_ONLY compilation_level SIMPLE_OPTIMIZATIONS или ADVANCED_OPTIMIZATIONS .
8 Данные POST слишком велики. Размер данных, отправленных вами в службу Closure Compiler, превышает 200 000 байт. И пользовательский интерфейс службы компилятора, и вызовы API используют HTTP-запрос POST для связи со службой, и общий объем данных, отправляемых в этом запросе, не может превышать 200 000 байт. Для вызовов API это ограничение распространяется на общий объем текста во всех параметрах запроса. Для пользовательского интерфейса Closure Compiler это ограничение применяется к общему объему текста как в исходном коде, так и в параметрах компилятора, таких как @code_url . Если ваш запрос слишком велик, либо переместите исходный код в отдельные файлы и ссылайтесь на них с помощью @code_url , либо используйте приложение Closure Compiler на локальном компьютере.
9 Файл слишком большой. Общий объем кода из всех файлов code_url , всех файлов externs_url , всего кода js_code и всего кода js_externs превышает 1024000 байт.
10 Не удается получить содержимое по URL-адресу. Произошла ошибка, когда служба Closure Compiler попыталась получить либо файл JavaScript, указанный в параметре code_url , либо файл externs, указанный в параметре externs_url . Убедитесь, что URL-адрес правильный и права доступа к файлу позволяют его просматривать.
12 URL сформирован неправильно. Значение либо параметра code_url , либо параметра externs_url не является правильным URL-адресом.
13 Нет выходной информации для создания, но компиляция была запрошена. Параметр output_info не указан.
14 Неизвестное значение output_info Значение параметра output_info не является compiled_code , warnings или statistics .
16 Неизвестный уровень предупреждения Значение параметра warning_level отличается от QUIET , DEFAULT или VERBOSE .
17 Неизвестный вариант форматирования. Значение параметра formatting отличается от pretty_print .
18 Неизвестный параметр в HTTP-запросе Запрос HTTP содержит параметр, отличный от одного из перечисленных в этом документе .
19 Недопустимое значение для output_file_name Имя выходного файла содержит символ числа, букву, точку, подчеркивание или тире, либо содержит две последовательные точки ( .. )
22 Недавно было выполнено слишком много компиляций. Попробуйте позже. Вы отправили слишком много компиляций со своего компьютера. Через час вы сможете снова выполнить компиляцию.
23 Исключение компилятора (с обратной трассировкой) Компилятор рухнул. Текст ошибки будет содержать информацию, которая поможет Google отладить проблему.
24 Неподдерживаемый тип входного ресурса Тип ресурса не http:, поэтому входной файл не будет получен.