php javascript minifier

qwe*_*ymk 6 javascript php

我在Hostgator上使用共享主机方案.因此我无法从命令行运行任何java.

有没有我可以使用的纯PHP缩小器?Minify在后台使用YUICompressor.jar,因此不起作用.

有人知道只使用PHP来缩小我可以从命令行运行的javascript吗?我也希望它缩小变量名称.

Thi*_*ter 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)
Run Code Online (Sandbox Code Playgroud)

用法: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/
Run Code Online (Sandbox Code Playgroud)