Php javascript minifier

I use shared hosting on Hostgator. Therefore, I can not start java from the command line.

Is there any pure PHP minifiers I can use? Minify uses YUICompressor.jar in the background so that it does not work.

Does anyone know something that only uses PHP to minimize javascript that I can run from the command line? I would also like to compress variable names.

+6
source share
4 answers

You can use google js minifier. Here's a python script that uses it to compress multiple javascript files with it:

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) 

Usage: python filename.py path/to/your/*.js > minified.js


If you are using an old version of python and you do not have simple json installed on your system, here is how you can get a script to work with a local version of simplejson (run these commands via 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/ 
+3
source

If you are considering other javascript minifiers / compressors, check out the PHP port dean edward packer: http://joliclic.free.fr/php/javascript-packer/en/

There is an online demo, so you can test it online (highly recommended before trying to install it on your own server). I quickly checked the online test by returning the correct javascript working file. He must do his job.

+1
source

The default minimum is not YUIC, but the native PHP JSMin port plus bug fixes.

Other native Javascript compressors for PHP that I came across:

  • JSqueeze (untested, but looks powerful)
  • JShrink (untested but simple design for removing tokens like JSMin)
  • JSMin + (does not save comments /*! Processes conditional comments)
+1
source

Find the JS minifier online web and request their <form> via PHP using cURL or file_get_contents or similar. I suppose you may need to contact your online service for permission before using their service in this way.

0
source

Source: https://habr.com/ru/post/908836/


All Articles