2012-02-19 11 views
6

मैं Hostgator पर एक साझा होस्टिंग योजना का उपयोग कर रहा हूँ। जैसे कि मैं कमांड लाइन से कोई जावा नहीं चला सकता।php जावास्क्रिप्ट minifier

वहाँ किसी भी शुद्ध पीएचपी minifiers वहाँ बाहर है कि मैं का उपयोग कर सकते है? Minify पृष्ठभूमि में YUICompressor.jar का उपयोग करता है तो यह है कि काम नहीं करेगा।

किसी को भी कुछ जावास्क्रिप्ट कि मैं कमांड लाइन से चला सकते हैं कम करें करने के लिए सिर्फ पीएचपी का उपयोग करता है के बारे में पता? मैं इसे वैरिएबल नामों को कम करने के लिए भी पसंद करूंगा।

+6

आप कहीं और befor को कम करने पर विचार किया है ई आपके सर्वर पर अपलोड कर रहा है? संभव नहीं के रूप में मैं अपने प्रोजेक्ट के लिए Git उपयोग कर रहा हूँ: – jergason

+0

शायद सबसे आसान तरीका है इस का उपयोग करते हुए cURL या इसी तरह – Vitamin

+0

@Jergason के लिए वेब सेवा का उपयोग करने के लिए किया जाएगा। – qwertymk

उत्तर

3

आप गूगल js minifier इस्तेमाल कर सकते हैं। यहाँ एक अजगर स्क्रिप्ट जो इसे इस्तेमाल करता है इसके साथ जावास्क्रिप्ट फाइलों का एक समूह को संपीड़ित करने के लिए:

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


मामले में आप एक प्राचीन अजगर संस्करण का उपयोग कर रहे हैं और simplejson पर स्थापित नहीं

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/ 
+0

क्या आपने इसका परीक्षण किया? – qwertymk

+0

यह मेरी वेबसाइट में से एक है जो उत्पादन में चलता है। मैंने बस इसके चारों ओर कुछ सामान हटा दिया और स्टैंडअलोन '__main__' ब्लॉक जोड़ा। मैंने * * संस्करण लेकिन मूल लिपि का परीक्षण नहीं किया। – ThiefMaster

+0

आह, बस वाक्यविन्यास त्रुटि तय की गई। यह सिर्फ एक 'था,' जो इसके स्थान पर नहीं था। आपको मिली त्रुटि का मतलब है कि आप पुराने पायथन संस्करण का उपयोग कर रहे हैं। इसे चलाने के लिए आपको कम से कम 2.6 की आवश्यकता है (जो पहले से ही पुराना है, 2.7 हाल ही में है!) – ThiefMaster

0

ऑनलाइन वेब आधारित जेएस मिनीफायर ढूंढें, और उनके <form> को PHP के माध्यम से curl या file_get_contents या इसी तरह से पूछें। मुझे लगता है कि इस तरह से उनकी सेवा का उपयोग करने से पहले आपको ऑनलाइन सेवा से अनुमति के लिए पूछना पड़ सकता है।

1

आप अन्य जावास्क्रिप्ट minifiers/कम्प्रेसर मानते हैं तो डीन एडवर्ड के पैकर की एक PHP बंदरगाह पर एक नज़र डालें: http://joliclic.free.fr/php/javascript-packer/en/

(अत्यधिक की सिफारिश की एक ऑनलाइन डेमो उपलब्ध है ताकि आप इसे ऑनलाइन परीक्षण कर सकते हैं है इससे पहले कि आप स्थापित करने का प्रयास यह आपके अपने सर्वर पर)। मैंने त्वरित ऑनलाइन परीक्षण ने मुझे एक सही काम करने वाली मिनीस्क्रिप्ट जावास्क्रिप्ट फ़ाइल वापस दे दी। इसे नौकरी मिलनी चाहिए।

1

कम करें के डिफ़ॉल्ट YUIC नहीं है, लेकिन: आपके सिस्टम, यहाँ आप कैसे स्क्रिप्ट एक स्थानीय simplejson संस्करण (SSH के माध्यम से उन आदेशों को चलाने के) के साथ काम करने के लिए प्राप्त कर सकते हैं एक देशी PHP port of JSMin प्लस बग फिक्स।

अन्य देशी पीएचपी जावास्क्रिप्ट कम्प्रेसर मैं का सामना करना पड़ा:

  • JSqueeze (अपरीक्षित, लेकिन शक्तिशाली दिखता है)
  • JShrink (अपरीक्षित, लेकिन एक साधारण टोकन-पदच्युत डिजाइन, JSMin की तरह)
  • JSMin+ (/*! टिप्पणियों को सुरक्षित रखने नहीं करता है, सशर्त टिप्पणियों mangles)
संबंधित मुद्दे