Closure Compiler Service API 参考文档

Closure 编译器服务已弃用,并将被移除。请考虑改为在本地运行编译器。

概览

如需从 Closure Compiler 服务请求经过编译的代码或其他信息,您必须向网址 https://closure-compiler.appspot.com/compile 发送 HTTP POST 请求。请求正文必须包含必需请求参数中列出的参数,还可以包含可选请求参数中列出的任何可选参数。

请尽可能遵循标志和选项中关于命令行选项的规范文档。此处没有记录在 Web 服务中提供的命令行选项。某些请求参数也无法在命令行中使用,或者具有不同的名称。

如果服务器未能处理您的请求,您会收到服务器错误消息。错误消息部分介绍了这些消息。

请求参数

必需的请求参数

js_codecode_url

要编译的 JavaScript。您必须至少包含这些参数中的一个,可以同时添加这两个。

js_code 参数必须是包含 JavaScript 的字符串,例如 alert('hello')

code_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 部分包含 Closure 编译器服务生成的压缩 JavaScript。仅当请求中包含值为 compiled_codeoutput_info 参数时,此部分才会显示。同样,只有当您添加值为 statisticsoutput_info 参数时,statistics 部分才会显示。

如果您添加了值为 warningsoutput_info 参数,并且编译器会生成警告,则输出将包含 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 Compiler 服务将包含 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>
      

errorwarning 标记的 filelinecol 属性会指明 Closure 编译器服务发生错误的位置。

如果 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 编译器实现的压缩程度的信息。对于 xml 输出,Closure 编译器服务会返回以下格式的统计信息:

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

可选请求参数

js_externs

该参数的值必须是声明函数名称或其他符号的 JavaScript 代码。使用 js_externs 可保留在要编译的代码之外定义的符号。仅当您使用 ADVANCED_OPTIMIZATIONScompilation_level 时,js_externs 参数才会生效。如需了解详情,请参阅高级编译

externs_url

此参数的值必须是声明函数名称或其他符号的包含 JavaScript 的文件的网址。此文件中声明的符号的保留方式与直接列在 js_externs 参数中的符号完全相同。仅当您使用 ADVANCED_OPTIMIZATIONScompilation_level 时,externs_url 参数才会起作用。如需了解详情,请参阅高级编译

如果您有多个 Extern 文件,则可以多次指定此参数。

exclude_default_externs

默认情况下,Closure 编译器服务使用标准的 externs 文件,用于声明常见的外部定义的符号(如 document)及其所有方法。如果您不想使用这些常见的外部,请在请求中添加值为 trueexclude_default_externs 参数。

如需详细了解 extern,请参阅高级编译和 Extern

output_file_name

如果存在,Closure Compiler 服务会将编译后的代码缓存一小时,并通过特殊网址提供。在此期间,您可以通过将浏览器指向此网址来测试编译的代码。网址的格式如下:

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 库代码。它还执行专为 Closure 库代码设计的优化。如需详细了解 Closure 库,请参阅 Closure 库文档。如需详细了解 goog.require() 函数,请参阅在 Closure 库中查找您的方式

use_closure_library 参数默认为 false

warning_level

请参阅标志和选项中有关 warning_level 的文档。

language

如需查看等效 language_in 选项的文档,请参阅标志和选项

language_out

请参阅标志和选项中有关 language_out 的文档。

rewrite_polyfills

请参阅标志和选项中有关 rewrite_polyfills 的文档。

use_types_for_optimization

请参阅标志和选项中有关 use_types_for_optimization 的文档。

错误消息

如果服务器未能处理您的请求,您会收到下表中列出的其中一个服务器错误消息。请注意,这些服务器错误消息与编译器错误和警告不同。编译器错误和警告表示 Closure 编译器发现您的 JavaScript 代码存在问题。服务器错误消息指出:编译器因您的请求中存在错误而无法处理您的代码。

错误代码错误消息含义
2输出模式未知。output_format 参数的值不是 xmljsontext
4压缩级别未知。compilation_level 参数的值不是 WHITESPACE_ONLYSIMPLE_OPTIMIZATIONSADVANCED_OPTIMIZATIONS
8POST 数据过大。 您发送到 Closure Compiler 服务的数据超过 200,000 字节。Compiler Service 界面和您的 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无法从网址检索内容。当 Closure 编译器服务尝试检索 code_url 参数中指示的 JavaScript 文件或 externs_url 参数中指示的 extern 文件时,会发生错误。请检查网址是否正确,以及该文件的权限是否允许查看。
12网址格式不正确。code_url 参数或 externs_url 参数的值不是格式正确的网址。
13没有要生成的输出信息,但已请求编译。尚未指定 output_info 参数。
14未知 output_info 值output_info 参数的值不是 compiled_codewarningsstatistics
16警告级别未知warning_level 参数的值不是 QUIETDEFAULTVERBOSE
17未知的格式选项。formatting 参数的值不是 pretty_print
18HTTP 请求中的未知参数HTTP 请求包含的参数不是本文档中列出的参数之一。
19output_file_name 的值无效 输出文件名包含数字、字母、点号、下划线或短划线的字符,或者包含两个连续的点 (..)
22最近执行的编译过多。请稍后重试。 您通过计算机提交的编译内容过多。一小时后,您应该可以再次执行编译了。
23编译器异常(含回溯) 编译器崩溃。错误文本将包含帮助 Google 调试问题的信息。
24输入资源类型不受支持 资源类型不是 http:,因此不会检索输入文件。