admin管理员组文章数量:1334333
I'm using a shared hosting plan on Hostgator. As such I can't run any java from the mand line.
Is there any pure PHP minifiers out there that I can use? Minify uses YUICompressor.jar in the background so that won't work.
Anyone know of something that uses just PHP to minify javascript that I can run from the mand line? I would also like it to shrink variable names.
I'm using a shared hosting plan on Hostgator. As such I can't run any java from the mand line.
Is there any pure PHP minifiers out there that I can use? Minify uses YUICompressor.jar in the background so that won't work.
Anyone know of something that uses just PHP to minify javascript that I can run from the mand line? I would also like it to shrink variable names.
Share Improve this question edited Feb 19, 2012 at 17:49 qwertymk asked Feb 19, 2012 at 17:25 qwertymkqwertymk 35.4k30 gold badges124 silver badges184 bronze badges 11- 6 Have you considered minifying somewhere else before uploading to your server? – Jamison Dance Commented Feb 19, 2012 at 17:29
- Perhaps the easiest way would be to use a web service for this using cURL or similar – Vitamin Commented Feb 19, 2012 at 17:29
- @Jergason: Not possible as I'm using git for my project. – qwertymk Commented Feb 19, 2012 at 17:33
- @Vague: Can you explain what you mean? – qwertymk Commented Feb 19, 2012 at 17:35
- code.google./p/jshrink- – Vamsi Krishna B Commented Feb 19, 2012 at 17:43
4 Answers
Reset to default 3You could use the google js minifier. Here's a python script which uses it to press a bunch of javascript files with it:
import httplib
import simplejson as json
import urllib
import sys
def bine_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),
('pilation_level', 'SIMPLE_OPTIMIZATIONS'),
('output_format', 'json'),
('output_info', 'piled_code'),
('output_info', 'errors'),
('output_info', 'warnings'),
])
headers = {'Content-type': "application/x-www-form-urlencoded"}
conn = httplib.HTTPConnection('closure-piler.appspot.')
conn.request('POST', '/pile', params, headers)
response = conn.getresponse()
data = json.loads(response.read())
conn.close()
if not data.get('piledCode'):
print >>sys.stderr, 'WARNING: Did not get any code from google js piler.'
print >>sys.stderr, data
print >>sys.stderr
print >>sys.stderr, 'Using unminified code'
return None
return data.get('piledCode')
# 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 bine_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 bine_js(js_files)
chunks.append(res)
return '\n\n'.join(chunks).strip()
if __name__ == '__main__':
print bine_js(sys.argv[1:], True)
Usage: python filename.py path/to/your/*.js > minified.js
In case you are using an ancient python version and do not have simplejson installed on your system, here's how you can get the script to work with a local simplejson version (run those mands via SSH):
cd
wget http://pypi.python/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/
If you consider other javascript minifiers/pressors, take a look at a PHP port of dean edward's packer: http://joliclic.free.fr/php/javascript-packer/en/
There is an online demo available so you can test it online (highly remended before you try to install it on your own server). I quick online test gave me back a correct working minified javascript file. It should get the job done.
Minify's default is not YUIC, but a native PHP port of JSMin plus bug fixes.
Other native PHP Javascript pressors I've e across:
- JSqueeze (untested, but looks powerful)
- JShrink (untested, but a simple token-remover design, like JSMin)
- JSMin+ (does not preserve
/*!
ments, mangles conditional ments)
Find an online web based JS minifier, and query their <form>
through PHP with cURL or file_get_contents
or similar. I suppose you may have to ask the online service for permission before using their service in this way.
本文标签: php javascript minifierStack Overflow
版权声明:本文标题:php javascript minifier - Stack Overflow 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.betaflare.com/web/1742368076a2461689.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论