2012-09-05 11 views
10

मैं निम्नलिखित बातें होने के लिए करना चाहते हैं:पीएचपी के साथ सीएसएस में संदर्भित कम फ़ाइल संकलित करें स्वचालित रूप से

  1. प्रक्रिया स्वचालित सर्वर साइड है।

  2. बस कम फ़ाइल का संदर्भ देने में सक्षम हो क्योंकि मैं अपने कोड में एक सीएसएस फ़ाइल करता हूं।

  3. उपयोगकर्ता को कम फ़ाइल के बजाय मिनीफाइड सीएसएस वापस कर दिया गया है - कैश किया गया है ताकि संकलक को तब तक चलाने की आवश्यकता नहीं है जब तक कि कम फ़ाइल अद्यतन नहीं की जाती है।

  4. के साथ काम करने के लिए कम फ़ाइल जो मेरे डोमेन के भीतर कहीं भी संदर्भित है।

मैं Lessphp देखा, लेकिन प्रलेखन बहुत स्पष्ट नहीं है, और न ही यह कैसे गतिशील रूप से इसे करने के लिए किसी भी कम फ़ाइल प्राप्त करने के लिए समझाने की है। मैंने सोचा कि मैं पोस्ट करूंगा कि मुझे यह सब कैसे मिल रहा है क्योंकि मैंने PHP के साथ इसे कैसे प्राप्त किया है, इस पर कोई रन नहीं देखा है।

उत्तर

17

यह सहायक LESSPHP v0.3.8 + पिछले संस्करणों के बारे में अनिश्चितता है, लेकिन आपको यह पता चल जाएगा कि यह कैसे काम करता है अगर यह सीधे बॉक्स से बाहर नहीं होता है।

<link rel="stylesheet" type="text/css" href="styles/main.less" />

आप less.js उपयोग कर रहे थे ग्राहक के पक्ष संकलित करने के लिए, सुनिश्चित करें कि आप बदल rel="stylesheet/less"rel="stylesheet" को

1) ले लो Lessphp मैं इस डेमो के संदर्भ के लिए /www/compilers/lessphp/ में इन फ़ाइलों को रखा बनाने

2) एक PHP स्क्रिप्ट बनाएं जिसे हम कम फ़ाइलों को फेंक सकते हैं। यह कैशिंग के साथ संकलन, सीएसएस को संकलित करने और प्रतिक्रिया के रूप में सीएसएस को वापस करने के साथ सौदा करेगा। मैंने इस फ़ाइल को /www/compilers/ पर रखा है और इसे lessphp.php

इनमें से अधिकांश कोड Lessphp साइट पर था, सिवाय इसके कि इसमें त्रुटियां थीं, और मैंने अंत में प्रतिक्रिया जोड़ दी है।

<?php 
require "lessphp/lessc.inc.php"; 
$file = $_GET["file"]; 
function autoCompileLess($inputFile, $outputFile) { 
    // load the cache 
    $cacheFile = $inputFile.".cache"; 
    if (file_exists($cacheFile)) { 
     $cache = unserialize(file_get_contents($cacheFile)); 
    } else { 
     $cache = $inputFile; 
    } 
    $less = new lessc; 
    $less->setFormatter("compressed"); 
    $newCache = $less->cachedCompile($cache); 
    if (!is_array($cache) || $newCache["updated"] > $cache["updated"]) { 
     file_put_contents($cacheFile, serialize($newCache)); 
     file_put_contents($outputFile, $newCache['compiled']); 
    } 
} 
autoCompileLess('../' . $file, '../' . $file . '.css'); 
header('Content-type: text/css'); 
readfile('../' . $file . '.css'); 
?> 

यह संचय फ़ाइल को कम फ़ाइल (जैसे, styles/main.less) और एक सीएसएस फ़ाइल (जैसे, styles/main.less.css) संकलित कर देगा।

3) mod_rewrite नियम जोड़ें ताकि उपयोगकर्ता द्वारा अनुरोध किए गए किसी भी कम फ़ाइल को हमारे कंपाइलर पर रीडायरेक्ट किया जा सके, इसे अपना रास्ता दिया जा सके। यह रूट .htaccess फ़ाइल में रखा गया था।

<IfModule mod_rewrite.c> 
    RewriteEngine On 
    RewriteBase/
    RewriteRule ^([^.]*\.less)$ compilers/lessphp.php?file=$1 [R,QSA,L] 
</ifModule> 

आप वर्डप्रेस का उपयोग कर रहे हैं, तो इस नियम यह बाद आने के लिए की आवश्यकता होगी - भले ही वर्डप्रेस है एक उप निर्देशिका में, यह इन नियमों के ऊपर लिख रहा है, और कम संकलन संदर्भित फ़ाइलें जो नीचे मौजूद के लिए घटित नहीं होगा (निर्देशिका के अनुसार) वर्डप्रेस का .htaccess नियम।

4) आपके कम कोड को संकलक स्थान के संबंध में अपेक्षाकृत संदर्भित किया जाना चाहिए। इसके अतिरिक्त, खाली विशेषताएँ हैं, उदाहरण के लिए, Lessphp संकलक विफल हो जाएगा।background-color: ;


अगर सब कुछ ठीक काम कर रहा है, निम्नलिखित होने चाहिए:

  1. सीधे अपने कम फ़ाइल ब्राउज़ http://domain.com/styles/main.less

  2. स्वचालित रूप से http://domain.com/compilers/lessphp?file=styles/main.less

  3. पर पुनः निर्देशित किया के साथ प्रस्तुत किया minified सीएसएस

  4. main.less.css और main.less.cache अब अपनी कम फ़ाइल के रूप में एक ही निर्देशिका में मौजूद होना चाहिए

  5. अंतिम बार संशोधित दिनांक जब तक आप अपने कम फ़ाइल का अद्यतन परिवर्तन नहीं होना चाहिए

संबंधित मुद्दे