我在Hostgator上使用共享主机方案。因此,我无法从命令行运行任何java。
有没有我可以使用的纯PHP缩小器? Minify在后台使用YUICompressor.jar,因此无效。
任何人都知道只使用PHP来缩小我可以从命令行运行的JavaScript吗?我也希望它缩小变量名称。
答案 0 :(得分:3)
您可以使用google js minifier。这是一个python脚本,用它来压缩一堆javascript文件:
import httplib
import simplejson as json
import urllib
import sys
def combine_js(js_files, minify=False):
files = list(js_files) # create a copy which we can modify
if not minify:
code = []
for path in files:
f = open(path, 'r')
code.append(f.read())
f.close()
return '\n\n'.join(code)
def _minify(code):
params = urllib.urlencode([
('js_code', code),
('compilation_level', 'SIMPLE_OPTIMIZATIONS'),
('output_format', 'json'),
('output_info', 'compiled_code'),
('output_info', 'errors'),
('output_info', 'warnings'),
])
headers = {'Content-type': "application/x-www-form-urlencoded"}
conn = httplib.HTTPConnection('closure-compiler.appspot.com')
conn.request('POST', '/compile', params, headers)
response = conn.getresponse()
data = json.loads(response.read())
conn.close()
if not data.get('compiledCode'):
print >>sys.stderr, 'WARNING: Did not get any code from google js compiler.'
print >>sys.stderr, data
print >>sys.stderr
print >>sys.stderr, 'Using unminified code'
return None
return data.get('compiledCode')
# Minify code in chunks to avoid the size limit
chunks = []
code = ''
while len(files):
path = files[0]
f = open(path, 'r')
data = f.read()
f.close()
# Check if we reach the size limit
if len(code + data) >= 1000000:
res = _minify(code)
if res is None:
# Fallback to unminified code
return combine_js(js_files)
chunks.append(res)
code = ''
continue
code += data
del files[0]
if code:
res = _minify(code)
if res is None:
# Fallback to unminified code
return combine_js(js_files)
chunks.append(res)
return '\n\n'.join(chunks).strip()
if __name__ == '__main__':
print combine_js(sys.argv[1:], True)
用法:python filename.py path/to/your/*.js > minified.js
如果您使用的是古老的python版本并且没有在您的系统上安装simplejson,那么您可以通过以下方式使用本地simplejson版本(通过SSH运行这些命令):
cd
wget http://pypi.python.org/packages/source/s/simplejson/simplejson-2.3.2.tar.gz
tar xzf simplejson-2.3.2.tar.gz
export PYTHONPATH=$HOME/simplejson-2.3.2/
答案 1 :(得分:1)
如果您考虑其他javascript minifiers / compressors,请查看dean edward的打包器的PHP端口:http://joliclic.free.fr/php/javascript-packer/en/
有一个可用的在线演示,因此您可以在线测试(强烈建议您在尝试在自己的服务器上安装它之前)。我快速在线测试给了我一个正确的工作缩小的javascript文件。 它应该完成工作。
答案 2 :(得分:1)
Minify的默认值不是YUIC,而是修复了PHP port of JSMin本地错误。
我遇到的其他原生PHP Javascript压缩器:
答案 3 :(得分:0)
找到一个基于网络的JS minifier,并通过cURL或<form>
或类似的方式通过PHP查询他们的file_get_contents
。我想你可能需要在以这种方式使用他们的服务之前询问在线服务的许可。