클로저 컴파일러 서비스는 지원 중단되었으며 삭제될 예정입니다. 컴파일러를 로컬에서 실행하는 것이 좋습니다.
개요
Closure Compiler 서비스 API는 웹 기반 API를 통해 클로저 컴파일러 자바스크립트 컴파일에 프로그래매틱 방식으로 액세스할 수 있습니다. 클로저 컴파일러 UI를 사용하면 웹페이지에서 간단한 양식을 통해 컴파일러 서비스를 쉽게 사용할 수 있지만, 이 웹페이지의 출력을 복사하는 것은 가장 효율적인 방법이 아닙니다. Closure Compiler 서비스 API를 사용하면 자체 도구를 빌드하고 자체 워크플로 흐름을 만들 수 있는 다양한 기능을 활용할 수 있습니다.
이 튜토리얼에서는 클로저 컴파일러 서비스에 자바스크립트를 보내고 클로저 컴파일러 출력을 다시 가져오는 과정을 안내합니다. 이 예에서는 자바스크립트에서 주석과 공백을 제거하는 클로저 컴파일러 컴파일의 가장 기본적인 수준을 사용합니다.
이 튜토리얼에서는 자바스크립트와 HTTP에 대한 기본 지식이 있다고 가정합니다. Python 스크립트를 사용하여 클로저 컴파일러 서비스에 자바스크립트를 제출하지만, Python에 대해 몰라도 예시를 따를 수 있습니다.
API와 통신하는 방법
- 요청 매개변수 확인
클로저 컴파일러 서버에 HTTP POST 요청을 전송하여 클로저 컴파일러 서비스와 상호작용합니다. 모든 요청에서 최소한 다음 매개변수를 전송해야 합니다.
js_code
또는code_url
-
이 매개변수의 값은 컴파일하려는 자바스크립트를 나타냅니다. 이러한 매개변수는 하나 이상 포함해야 하며 두 매개변수를 모두 포함할 수 있습니다.
js_code
매개변수는 자바스크립트가 포함된 문자열이어야 합니다(예:alert('hello')
).code_url
매개변수에는 HTTP를 통해 사용할 수 있는 자바스크립트.js
파일의 URL이 포함되어야 합니다.js_code:path/to/filename.js
형식으로 이름이 지정된 소스 매개변수를 포함할 수도 있습니다. 각 파일이 가상 파일 시스템에 생성되어ECMASCRIPT6
에서 지원되는import
및export
문을 통해 표준화된 모듈을 사용할 수 있습니다. compilation_level
-
이 매개변수의 값은 자바스크립트에 적용할 압축 정도와 최적화 정도를 나타냅니다. 가능한 컴파일 수준은
WHITESPACE_ONLY
,SIMPLE_OPTIMIZATIONS
,ADVANCED_OPTIMIZATIONS
세 가지입니다. 이 예에서는 주석과 공백만 삭제하는WHITESPACE_ONLY
컴파일을 사용합니다.compilation_level
매개변수의 기본값은SIMPLE_OPTIMIZATIONS
입니다. output_info
-
이 매개변수의 값은 컴파일러에서 원하는 정보의 종류를 나타냅니다. 출력에는
compiled_code
,warnings
,errors
,statistics
의 네 가지 종류가 있습니다. 이 예에서는 클로저 컴파일러 서비스에 요청에서 수신한 자바스크립트의 압축된 버전을 출력하도록 지시하는 값compiled_code
를 사용합니다. output_format
-
클로저 컴파일러 서비스 출력의 형식입니다. 가능한 출력 형식은
text
,json
,xml
입니다. 이 예시에서는 원시 텍스트를 출력하는text
값을 사용합니다.output_format
매개변수의 기본값은text
입니다.
이러한 필수 매개변수와 추가 선택적 매개변수에 대한 자세한 내용은 API 참조를 확인하세요.
이 소개 튜토리얼의 예시에서는 한 줄의 원시 자바스크립트를 클로저 컴파일러 서비스에 전송하여
code_url
대신js_code
를 사용합니다.WHITESPACE_ONLY
의compilation_level
를 사용하고output_format
가text
인 원시 텍스트 출력을 요청하고output_info
유형의compiled_code
을 요청합니다. -
폐쇄 컴파일러 서비스에 대한 사후 요청
Closure Compiler 서비스의 출력을 가져오려면 POST 요청에서 1단계에서 선택한 매개변수를 Closure Compiler 서비스 API URL로 전송합니다. 이를 위한 한 가지 방법은 Hello World of Closure Compiler Service API와 같은 간단한 HTML 양식을 사용하는 것입니다.
그러나 개발 중에 이러한 양식을 사용하려면 출력을 브라우저에서 복사하여 .js 파일에 붙여넣어야 합니다. 대신 클로저 컴파일러 서비스에 요청을 전송하는 작은 프로그램을 작성하는 경우 클로저 컴파일러 출력을 파일에 직접 쓸 수 있습니다. 예를 들어 다음 Python 스크립트는 클로저 컴파일러 서비스에 요청을 보내고 응답을 작성합니다.
#!/usr/bin/python2.4 import httplib, urllib, sys # Define the parameters for the POST request and encode them in # a URL-safe format. params = urllib.urlencode([ ('js_code', sys.argv[1]), ('compilation_level', 'WHITESPACE_ONLY'), ('output_format', 'text'), ('output_info', 'compiled_code'), ]) # Always use the following value for the Content-type header. headers = { "Content-type": "application/x-www-form-urlencoded" } conn = httplib.HTTPSConnection('closure-compiler.appspot.com') conn.request('POST', '/compile', params, headers) response = conn.getresponse() data = response.read() print data conn.close()
참고: 이 예를 재현하려면 Windows 사용자가 Python을 설치해야 할 수 있습니다. Windows에서 Python을 설치하고 사용하는 방법에 대한 안내는 Python Windows FAQ를 참조하세요.
이 스크립트는 전달된 인수인 명령줄을 최적화합니다. 위 코드를
compile.py
파일에 붙여넣고 파일 권한을 실행 파일로 변경하여 다음 명령어를 실행합니다.$ python compile.py 'alert("hello");// This comment should be stripped'
이 명령어는 클로저 컴파일러 응답에서 압축된 코드를 출력합니다.
alert("hello");
이 예에서는 기본 컴파일을 사용하므로 컴파일러는 주석 제거 이외의 다른 작업을 하지 않습니다.
다음은 스크립트와 관련하여 유의해야 할 사항입니다.
-
매개변수는 HTTPS 연결의 요청 메서드에 URL 인코딩 문자열로 전달됩니다.
urllib.urlencode
호출 후에 매개변수 변수에 다음 문자열이 포함됩니다.js_code=alert%28%22hello%22%29%3B%2F%2F+This+comment+should+be+stripped&output_info=compiled_code&out=text&compilation_level=WHITESPACE_ONLY
직접 스크립트를 작성하는 경우 스크립트에서 다음과 같이 URL로 인코딩된 콘텐츠를 게시해야 합니다. - 요청에는 항상
application/x-www-form-urlencoded
의Content-type
헤더가 있어야 합니다.
-
매개변수는 HTTPS 연결의 요청 메서드에 URL 인코딩 문자열로 전달됩니다.
다음 단계
보다 현실적인 개발 시나리오에서 더 나은 압축을 달성하는 데 이 서비스를 사용하는 방법을 알아보려면 API로 파일 압축하기로 계속 진행하세요.