2013-04-23 5 views
7

मैं एक परियोजना पर काम कर रहा हूं जहां हम चाहते हैं कि उपयोगकर्ता कस्टम रंगों को परिभाषित करने में सक्षम हो। हम दूसरों के बीच, कम पैकेज के साथ उल्का का नवीनतम संस्करण चला रहे हैं।उल्का में कम फ़ाइलों में मूल्य लगाने के लिए कोई तरीका?

अभी सभी रंग एक ही विषय में स्थित चर हैं .lessimport फ़ाइल जो प्रसंस्करण के आरंभ में शामिल है। साइट पर सभी रंग (और कई बाद की कम फ़ाइलें) इन कुछ चर से उत्पन्न होते हैं।

विचार यह था कि प्रत्येक उपयोगकर्ता के लिए केवल एक नया उपयोगकर्ता Theme.lessimport फ़ाइल उत्पन्न करना था, यदि मौजूद है, तो थीम के बाद आयात किया जा सकता है .lessimport फ़ाइल कस्टम मानों के साथ चर को ओवरराइड करने के लिए। यदि आप भौतिक रूप से निर्देशिका में फ़ाइल जोड़ते हैं, तो यह सब खूबसूरती से और निष्पक्ष रूप से काम करता है, लेकिन मुझे गतिशील रूप से/प्रोग्रामेटिक तरीके से ऐसा करने का तरीका भी नहीं लगता है।

मुझे आश्चर्य है कि यह भी कम से कम किया जा सकता है।

  • बड़े हैंग-अप में से एक यह है कि सीएसएस का इन चरों से लिया गया है- सीएसएस सहित हमारे अपने ऐप के प्लगइन/मॉड्यूल के साथ शामिल है।
  • ऐसा प्रतीत होता है कि आप कम प्री-प्रोसेसिंग में शामिल करने के लिए एक दूरस्थ फ़ाइल आयात नहीं कर सकते हैं ... इसलिए फ़ाइल दूरस्थ सर्वर पर उत्पन्न नहीं की जा सकती है (यह हमारी स्थिति के लिए आदर्श स्थिति होगी क्योंकि उपयोगकर्ता डेटा होगा एक एपीआई सर्वर पर मौजूद है)।
  • कम से कम किसी भी मूल्य को उत्पन्न करने या अन्यथा इंजेक्ट करने के लिए कोई प्रोग्रामेटिक तरीका प्रतीत नहीं होता है - कम से कम जेएस के माध्यम से मुझे बातचीत करने का कोई तरीका नहीं मिल रहा है।

इस असुविधा के अलावा, कम हम क्या कर रहे हैं के लिए एकदम सही है, इसलिए मैं वास्तव में इस काम बनाना चाहते । किसी को उम्मीद है कि वहां कुछ ज्ञान या दिशा है जो वे प्रदान कर सकते हैं।

+0

कम संकलक जावास्क्रिप्ट में लिखा गया है, और यह क्लाइंट-साइड व्याख्या का समर्थन करता है। क्या यह आवश्यक है कि सर्वर सर्वर पर कोड संकलित किया गया हो? [यह प्रश्न देखें] (http://stackoverflow.com/questions/9316385/pass-a-string-of-less-to-less-js-and-receive-css) – sffc

+0

मैं उम्मीद कर रहा था कि एक रास्ता होगा उल्का के कम पैकेज के साथ जो स्वचालित रूप से कम फ़ाइलों को पकड़ता है, उन्हें संकलित करता है, और उन्हें ग्राहकों को सेवा देता है। हम इसे "मैनुअल" क्लाइंट-आधारित समाधान पर ले जाने के लिए समाप्त कर सकते हैं। – ValZho

+4

आपका .less पैकेज समय पर संकलित किया गया है - उल्का चलाने से पहले और किसी भी क्लाइंट से कनेक्ट होने से पहले। आप इसके लिए एक अलग रणनीति के साथ आना चाहते हैं। – emgee

उत्तर

0

bootstrap3-less पैकेज वैरिएबल और मिक्सिन को कैसे लागू करता है, इस पर एक नज़र डालें। विशेष रूप से उनके README का उन्नत उपयोग खंड।

"अगर आप एक फ़ाइल आयात करना चाहते हैं, तो इसे विस्तार दें। आयात करें। उल्का को स्वतंत्र रूप से संसाधित करने से रोकने के लिए।" तो आपके उदाहरण में आप अपनी थीम फ़ाइल का नाम लेंगे: theme.import.less

0

बेशक आप इसे कर सकते हैं। बस "एफएस" नोड मॉड्यूल का उपयोग करें।

यहां एक बेवकूफ उदाहरण है। जब आप ऐसा करते हैं तो बहुत सारे मिलचास होते हैं, लेकिन बुनियादी प्रमाण-अवधारणा के लिए, इसे जांचें।

if (Meteor.isClient) { 
    Template.hello.greeting = function() { 
     return "Welcome to less_injector_meteor_test."; 
    }; 

    Template.hello.events({ 
     'click #button': function() { 
      var css = "body {background: " + $("#color").val() + ";}"; 
      Meteor.call("writeToUserThemeFile", css); 
     } 
    }); 
} 

if (Meteor.isServer) { 
    Meteor.methods({ 
     "writeToUserThemeFile" :function(css) { 
      var fs = Npm.require("fs"); 
      var path = "/Users/charnjitsingh/Desktop/less_injector_meteor_test"; 
      fs.writeFile(path+"/user_theme.less", css, function(err) { 
       console.log("WRITING FILE"); 
       if (err) { 
        console.log("ERROR WHEN WRITING", err); 
       } 
      }); 
     } 
    }); 
} 
संबंधित मुद्दे