Vakfın üstüne Compass üzerinden dayanan bir SCSS projem var. Daha sonra, küstahlık değişkenler kümesi tanımlayan bu değişkenlerin açısından kurallarının bir demet tanımlar: (Benim projem değişken ayarları ve ithalat ifadeleri daha birçok vardır; bu basitleştirilmiştir.)SCSS/Pusula için dinamik içe aktarma?
vars.scss:
$foo = #fafafa
$bar = 14px;
// rules using $foo and $bar
@import '_rules';
vars.scss'u derlemek için pusulayı kullanıyorum ve her şey sass değişkenleri için harika. Ancak, ben de benim app farklı tema yeteneği istiyor ve orijinal değişkenler geçersiz değişkenlerin bir dizi yeni tanımlayarak farklı bir tema oluşturmak:
vars.scss:
$foo = #fafafa
$bar = 14px;
@import 'otherVars';
@import '_rules';
I 70+ temaya sahip olduğumda dosyayı manuel olarak düzenleyemiyorum. (Birçok tema olması benim app amaçlar için gereklidir.) Ne istiyorum gerçekten aşağıdaki gibi bir şey yapabilmek için:
vars.scss:
$foo = #fafafa
$bar = 14px;
@import '{{otherVars}}';
@import '_rules';
Sonra gibi bir şey diyebiliriz: Ben her tema için bir kez compass
diyebiliriz çünkü
compass --otherVars themes/theme2
Daha sonra, tüm temalar çekivermek kolay olurdu.
SCSS bunu yapmanıza izin veriyor mu? Ona baktım ve öyle görünmüyor.
_app_prefix.scss:
$foo = #fafafa
$bar = 14px;
_app_suffix.scss:
@import '_rules';
Bulunduğum geçici çözüm bir önek ve sonek orijinal vars.scss bölmek olduğunu
app.scss:
theme2.scss:
@import '_app_prefix';
// only override $foo - let the original value of $bar stand
$foo = #ebebeb;
@import '_app_suffix';
Bu
@import '_app_prefix';
// no overrides by default
@import '_app_suffix';
Ve belirli bir tema için geçersiz kılmak için, size benzeyen bir dosyayı yapmak istiyorum çalışır, ama sorta ağrılı ve ek kazan tanıtıyor.
Bir sonraki sorun da dinamik olarak inşa edilmesi gereken ek @import 'rules_foo'
ifadeleri sahip olmak isteyen edilir.
vars: Yani benim genel fantezi gibi görünecektir.SCSS:
$foo = #fafafa
$bar = 14px;
@import '{{otherVars}}';
@import '_rules';
{{ @import 'additional_rules' for additional_rules in rules }}
Ve diyebiliriz:
compass --otherVars themes/theme2 --rules "rules_1" "rules_2" "rules_3"
(Açıkçası bu biraz handwavy ama umarım fikir.)
bunu yapmanın bir yolu var mı? Yoksa gidona ya da başka bir şablona başvurmak zorunda mıyım?
Evet, ancak oluşturma zamanında dinamik olarak ayarlanamaz ve birden çok içe aktarmaya izin vermez. –
Hmm, evet, haklısın ... Cevabımı, soruyla daha yakından eşleştirmek için değiştirdim. Umarım yardımcı olur! – boxed
Evet, şu an yaklaştığım yaklaşım (gidonları kullanıyorum). Daha az bir şey için umuyordum. –