我正在尝试将闭包编译器集成到我的部署过程中。我遇到了这个在线工具,它允许我从所需的组件生成一些 javascript。我看到可以通过API访问该工具,所以这就是我想要集成到我的部署脚本中的内容。
我不想重新发明轮子,并且想知道是否有一个已经可用的用于此 API 的 python 包装器。提供的示例非常低级,我还没有找到替代方案。
有人可以指向更高级别的 python 库来访问Goggle Closure Compiler Service API
吗?
实际使用 Python的示例developer.google.com
,所以这是一个很好的起点。但是,似乎 API 太小了,甚至官方文档也只是选择使用urllib
和httplib
Python 内置模块。将该逻辑推广到一个或两个辅助函数中似乎是一项微不足道的任务。
...
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.HTTPConnection('closure-compiler.appspot.com')
conn.request('POST', '/compile', params, headers)
...
请参阅https://developers.google.com/closure/compiler/docs/api-tutorial1
PS你也可以查看https://github.com/danielfm/closure-compiler-cli——它是一个命令行工具,但源代码演示了 API 的真正简单性。
所以把上面的变成一个 Pythonic API:
import httplib
import sys
import urllib
from contextlib import closing
def call_closure_api(**kwargs):
with closing(httplib.HTTPConnection('closure-compiler.appspot.com')) as conn:
conn.request(
'POST', '/compile',
urllib.urlencode(kwargs.items()),
headers={"Content-type": "application/x-www-form-urlencoded"}
)
return conn.getresponse().read()
call_closure_api(
js_code=sys.argv[1],
# feel free to introduce named constants for these
compilation_level='WHITESPACE_ONLY',
output_format='text',
output_info='compiled_code'
)