클로저 컴파일러 서비스 API 참조

클로저 컴파일러 서비스는 지원 중단되었으며 삭제될 예정입니다. 컴파일러를 로컬에서 실행하는 것이 좋습니다.

개요

클로저 컴파일러 서비스에서 컴파일된 코드 또는 기타 정보를 요청하려면 URL https://closure-compiler.appspot.com/compile에 HTTP POST 요청을 보내야 합니다. 요청 본문에는 필수 요청 매개변수에 나열된 매개변수가 포함되어야 하며 선택적 요청 매개변수에 나열된 선택적 매개변수도 포함될 수 있습니다.

가능한 경우 이 페이지는 플래그 및 옵션의 명령줄 옵션에 관한 표준 문서를 따릅니다. 웹 서비스에서 사용할 수 없는 명령줄 옵션은 여기에 설명되어 있지 않습니다. 일부 요청 매개변수는 명령줄에서 사용할 수 없거나 이름이 다릅니다.

서버가 요청을 처리하지 못하면 서버 오류 메시지가 표시됩니다. 이러한 메시지는 오류 메시지 섹션에 설명되어 있습니다.

요청 매개변수

필수 요청 매개변수

js_code 또는 code_url

컴파일할 자바스크립트입니다. 이러한 매개변수는 하나 이상 포함해야 하며 두 매개변수를 모두 포함할 수 있습니다.

js_code 매개변수는 자바스크립트를 포함하는 문자열(예: alert('hello'))이어야 합니다.

code_url 매개변수에는 자바스크립트 파일의 URL이 포함되어야 합니다. 여러 개의 code_url 매개변수를 포함하여 여러 입력 파일을 지정할 수 있습니다.

compilation_level

플래그 및 옵션에서 compilation_level에 관한 문서를 참고하세요.

output_format
클로저 컴파일러 서비스 출력의 형식입니다. 다음과 같은 세 가지 출력 형식이 있습니다.
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 Compiler 서비스에서 생성한 압축된 자바스크립트가 포함됩니다. 이 섹션은 요청에 값이 compiled_codeoutput_info 매개변수를 포함하는 경우에만 표시됩니다. 마찬가지로 statistics 섹션은 값이 statisticsoutput_info 매개변수를 포함하는 경우에만 표시됩니다.

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

코드에 errorsoutput_info를 포함하면 코드에 구문 오류나 컴파일을 방해하는 기타 문제가 포함되어 있다면 클로저 컴파일러 서비스에 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 태그의 file, line, col 속성은 클로저 컴파일러 서비스에서 오류가 발생한 위치를 나타냅니다.

클로저 컴파일러 서비스에 입력 처리를 방해하는 오류가 발생하면 다음과 같이 출력됩니다.

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

json 출력 형식은 요청된 정보를 자바스크립트 객체 표기법 (JSON) 문자열로 래핑합니다. 자바스크립트가 자바스크립트 객체를 반환하므로 이 문자열의 평가입니다.

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_infocompiled_code가 포함되어 있으면 텍스트에 자바스크립트가 포함됩니다. output_infowarnings가 포함된 경우 텍스트에 경고 메시지가 포함됩니다. output_infostatistics가 포함된 경우 텍스트에 통계가 포함됩니다.

output_format 매개변수의 기본값은 text입니다.

output_info

컴파일러에서 원하는 출력 유형을 나타냅니다. 출력에는 네 가지 유형이 있습니다.

compiled_code
입력 자바스크립트의 압축 및 최적화 버전입니다.
warnings
자바스크립트에서 발생 가능한 버그를 나타내는 메시지
errors
자바스크립트의 구문 오류 또는 기타 오류를 나타내는 메시지
statistics

클로저 컴파일러가 수행하는 압축 정도에 관한 정보입니다. xml 출력의 경우 클로저 컴파일러 서비스는 통계를 다음 형식으로 반환합니다.

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

요청 매개변수(선택사항)

js_externs

이 매개변수의 값은 함수 이름 또는 기타 기호를 선언하는 자바스크립트 코드여야 합니다. 컴파일하는 코드 외부에 정의된 기호를 유지하려면 js_externs를 사용하세요. js_externs 매개변수는 ADVANCED_OPTIMIZATIONScompilation_level를 사용하는 경우에만 효과가 있습니다. 자세한 내용은 고급 컴파일을 참고하세요.

externs_url

이 매개변수의 값은 함수 이름 또는 기타 기호를 선언하는 자바스크립트가 포함된 파일의 URL이어야 합니다. 이 파일에 선언된 기호는 js_externs 매개변수에 직접 나열된 기호와 정확히 동일한 방식으로 보존됩니다. externs_url 매개변수는 ADVANCED_OPTIMIZATIONScompilation_level를 사용하는 경우에만 효과가 있습니다. 자세한 내용은 고급 컴파일을 참고하세요.

외부 파일이 여러 개 있는 경우 이 매개변수를 여러 번 지정할 수 있습니다.

exclude_default_externs

기본적으로 클로저 컴파일러 서비스는 document 및 모든 메서드와 같이 외부에 정의된 일반적인 기호를 선언하는 표준 extern 파일을 사용합니다. 이러한 일반적인 extern을 사용하지 않으려면 요청에 값이 trueexclude_default_externs 매개변수를 포함하세요.

Exter에 관한 자세한 내용은 고급 컴파일 및 Externs를 참조하세요.

output_file_name

클로저 컴파일러 서비스가 있는 경우 컴파일된 코드를 1시간 동안 캐시하여 특수 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() 문을 찾아 이러한 문으로 요청된 클로저 라이브러리 코드를 제공합니다. 클로저 라이브러리 코드용으로 특별히 설계된 최적화도 수행합니다. 클로저 라이브러리에 대한 자세한 내용은 클로저 라이브러리 문서를 참조하세요. goog.require() 함수에 관한 자세한 내용은 클로저 라이브러리 둘러보기를 참고하세요.

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에 관한 문서를 참고하세요.

오류 메시지

서버가 요청을 처리하지 못하면 아래 표에 나열된 서버 오류 메시지 중 하나를 받게 됩니다. 이러한 서버 오류 메시지는 컴파일러 오류 및 경고와 다릅니다. 컴파일러 오류 및 경고는 클로저 컴파일러가 자바스크립트 코드에서 문제를 발견했음을 나타냅니다. 서버 오류 메시지는 요청의 오류로 인해 컴파일러에서 코드를 전혀 처리할 수 없음을 나타냅니다.

오류 코드오류 메시지의미
2알 수 없는 출력 모드입니다.output_format 매개변수의 값은 xml, json 또는 text가 아닙니다.
4알 수 없는 압축 수준입니다.compilation_level 매개변수의 값은 WHITESPACE_ONLY, SIMPLE_OPTIMIZATIONS 또는 ADVANCED_OPTIMIZATIONS가 아닙니다.
8POST 데이터가 너무 큽니다. 클로저 컴파일러 서비스에 전송한 데이터의 크기가 200,000바이트를 초과합니다. 컴파일러 서비스 UI와 API 호출은 모두 HTTP POST 요청을 사용하여 서비스와 통신하며 이 요청에서 전송된 총 데이터 양은 200,000바이트를 초과할 수 없습니다. API 호출의 경우 이 한도가 모든 요청 매개변수의 총 텍스트 양에 적용됩니다. 클로저 컴파일러 UI의 경우 이 제한은 소스 코드와 컴파일러 옵션(예: @code_url)의 총 텍스트 양에 적용됩니다. 요청이 너무 크면 소스 코드를 별도의 파일로 이동하고 @code_url를 사용하여 참조하거나 로컬 머신에서 클로저 컴파일러 애플리케이션을 사용하세요.
9파일이 너무 큽니다.모든 code_url 파일, 모든 externs_url 파일, 모든 js_code 코드 및 모든 js_externs 코드의 총 코드 양이 1,024,000바이트를 초과합니다.
10URL에서 콘텐츠를 가져올 수 없습니다.클로저 컴파일러 서비스에서 code_url 매개변수에 표시된 자바스크립트 파일 또는 externs_url 매개변수에 표시된 externs 파일을 검색하려고 하면 오류가 발생했습니다. URL이 올바르고 파일의 권한을 볼 수 있는지 확인하세요.
12URL 형식이 잘못되었습니다.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가 아닙니다.
18HTTP 요청에 알 수 없는 매개변수가 있습니다.HTTP 요청에 이 문서에 나열된 매개변수 중 하나가 아닌 다른 매개변수가 포함되어 있습니다.
19output_file_name의 값이 잘못되었습니다. 출력 파일 이름에 숫자, 문자, 점, 밑줄, 대시가 있거나 연속된 두 개의 점(..)이 있습니다.
22최근에 너무 많은 컴파일을 실행했습니다. 나중에 다시 시도하세요. 머신에서 컴파일을 너무 많이 제출했습니다. 1시간이 지나면 컴파일을 다시 실행할 수 있습니다.
23컴파일러 예외 (백트레이스 포함) 컴파일러가 다운되었습니다. 오류 텍스트에는 Google에서 문제를 디버그하는 데 도움이 되는 정보가 포함됩니다.
24지원되지 않는 입력 리소스 유형 리소스 유형이 http:가 아니므로 입력 파일을 검색할 수 없습니다.