चयनित उत्तर एक व्यवहार्य समाधान प्रदान नहीं करता है।
ओपी का अभ्यास अनियमित लगता है। एक साझा / आम फ़ाइल आम तौर पर partialsएक मानक बॉयलरप्लेट निर्देशिका के अंतर्गत रहती है । आपको तब जोड़ना चाहिएpartials अपने कोड में कहीं भी धारावाहिकों को हल करने के लिए अपने कॉन्फ़िगरेशन आयात पथों में निर्देशिका ।
जब मुझे पहली बार इस मुद्दे का सामना करना पड़ा, तो मुझे लगा कि SASS शायद आपको नोड के समान एक वैश्विक वैरिएबल प्रदान __dirnameकरता है, जो वर्तमान कार्य निर्देशिका ( cwd) के लिए एक पूर्ण मार्ग रखता है । दुर्भाग्य से, ऐसा नहीं है और यही कारण है कि एक @importनिर्देश पर प्रक्षेप संभव नहीं है, इसलिए आप एक गतिशील आयात पथ नहीं कर सकते।
SASS डॉक्स के अनुसार ।
आपको :load_pathsअपने Sass config में सेट करना होगा । चूंकि ओपी कम्पास का उपयोग करता है, इसलिए मैं यहां प्रलेखन के अनुसार उसका पालन करूंगा ।
आप सीएलआई समाधान के साथ purposed के रूप में जा सकते हैं, लेकिन क्यों? इसे जोड़ने के लिए यह बहुत अधिक सुविधाजनक है config.rb। यह overriding के लिए CLI का उपयोग करने के लिए समझ में आता है config.rb(जैसे, विभिन्न बिल्ड परिदृश्य)।
तो, मान लें कि आपका config.rbप्रोजेक्ट रूट के तहत है, बस निम्नलिखित पंक्ति जोड़ें:
add_import_path 'sub_directory_a'
और अब @import 'common';कहीं भी ठीक काम करेगा।
जबकि यह जवाब देता है कि ओपी, अधिक है।
अनुबंध
आपको उन मामलों में भाग लेने की संभावना है जहां आप एक सीएसएस फ़ाइल को एक एम्बेडेड तरीके से आयात करना चाहते हैं, अर्थात्, वेनिला @importनिर्देश के माध्यम से नहीं है सीएसएस बॉक्स से बाहर प्रदान करता है, लेकिन आपके पास के साथ सीएसएस फ़ाइल सामग्री का एक वास्तविक मर्ज। एक और सवाल है , जिसका जवाब अनिश्चित रूप से दिया गया है (समाधान क्रॉस-एनवायरनमेंट काम नहीं करता है)। फिर समाधान, इस SASS एक्सटेंशन का उपयोग करना है ।
एक बार स्थापित होने के बाद, निम्न पंक्ति को अपने विन्यास में जोड़ें: require 'sass-css-importer'और फिर, अपने कोड में कहीं:@import 'CSS:myCssFile';
ध्यान दें कि इस कार्य के लिए एक्सटेंशन को छोड़ दिया जाना चाहिए।
हालाँकि, हम उसी मुद्दे पर चलेंगे जब एक सीएसएस फ़ाइल को एक गैर-डिफ़ॉल्ट पथ से आयात करने की कोशिश की जाती है और add_import_pathसीएसएस फाइलों का सम्मान नहीं करता है। तो इसे हल करने के लिए, आपको अपने कॉन्फ़िगरेशन में एक और लाइन जोड़ने की आवश्यकता है, जो स्वाभाविक रूप से समान है:
add_import_path Sass::CssImporter::Importer.new('sub_directory_a')
अब सब कुछ अच्छी तरह से काम करेगा।
पुनश्च, मैंने देखा है कि sass-css-importerदस्तावेज़ इंगित करता है CSS:कि .cssएक्सटेंशन को छोड़ने के अलावा एक उपसर्ग आवश्यक है । मुझे पता चला कि यह परवाह किए बिना काम करता है। किसी ने एक मुद्दा शुरू किया , जो अब तक अनुत्तरित रहा।
-I? यदि वह पाथनेम बदल जाता है, तो बहुत सारे खोज और प्रतिस्थापन होंगे; और इसे किसी को भी साझा करने के लिए उसी स्थानीय फ़ोल्डर संरचना की आवश्यकता है ।scss