Seçilen cevap geçerli bir çözüm sunmuyor.
OP'nin uygulaması düzensiz görünüyor. Paylaşılan / ortak bir dosya normalde partialsstandart bir ortak metin dizininin altında bulunur . Daha sonra partialskodunuzun herhangi bir yerinde kısmi sorunları çözmek için yapılandırma içe aktarma yollarınıza dizin eklemelisiniz .
Bu sorunla ilk kez karşılaştığımda, SASS'nin muhtemelen size Node'unkine benzer bir global değişken verdiğini __dirnameve mevcut çalışma dizini ( cwd) için mutlak bir yol tuttuğunu düşündüm . Maalesef öyle değil ve nedeni bir @importdirektif üzerinde enterpolasyonun mümkün olmaması, dolayısıyla dinamik bir içe aktarma yolu yapamazsınız.
SASS belgelerine göre .
:load_pathsSass yapılandırmanızda ayarlamanız gerekir . OP Pusula'yı kullandığından, bunu buradaki belgelere göre takip edeceğim .
CLI çözümünü amaçlandığı gibi kullanabilirsiniz, ancak neden? eklemek çok daha uygun config.rb. Geçersiz kılmak için CLI kullanmak mantıklı olacaktır config.rb(Örneğin, farklı oluşturma senaryoları).
Bu nedenle, config.rbprojenizin kök dizininde olduğunu varsayarak , aşağıdaki satırı ekleyin:
add_import_path 'sub_directory_a'
Ve şimdi @import 'common';her yerde gayet iyi çalışacak.
Bu OP'yi yanıtlarken, daha fazlası var.
Ek
Bir CSS dosyasını gömülü bir şekilde, yani @importCSS'nin kutunun dışında sağladığı vanilya yönergesi aracılığıyla değil , bir CSS dosyası içeriğinin SASS'nizle gerçek bir şekilde birleştirilmesi yoluyla içe aktarmak istediğiniz durumlarla karşılaşmanız olasıdır . Kesin olmayan bir şekilde yanıtlanan başka bir soru daha var (çözüm ortamlar arası çalışmıyor). Çözüm, bu SASS uzantısını kullanmaktır .
Kurulduktan sonra, aşağıdaki satırı yapılandırmanıza ekleyin: require 'sass-css-importer've ardından, kodunuzda bir yere:@import 'CSS:myCssFile';
Bunun çalışması için uzantının atlanması gerektiğine dikkat edin.
Ancak, bir CSS dosyasını varsayılan olmayan bir yoldan içe aktarmaya çalışırken aynı sorunla karşılaşacağız ve add_import_pathCSS dosyalarına uymayacağız. Bunu çözmek için, yapılandırmanıza doğal olarak benzer olan başka bir satır eklemeniz gerekir:
add_import_path Sass::CssImporter::Importer.new('sub_directory_a')
Şimdi her şey güzel çalışacak.
Not: sass-css-importerBelgelerin CSS:, .cssuzantının çıkarılmasına ek olarak bir ön ek gerektiğini gösterdiğini fark ettim . Ne olursa olsun işe yaradığını öğrendim. Birisi şimdiye kadar cevapsız kalan bir konu başlattı .
-Imi? Bu yol adı değişirse, pek çok arama ve değiştirme işlemi olacaktır; ve .scss paylaşan herkesle aynı yerel klasör yapısını gerektirir