Libsass: إضافة خيار للتحكم في سلوك الاستيراد المضمن لـ CSS

تم إنشاؤها على ٢٨ أكتوبر ٢٠١٥  ·  11تعليقات  ·  مصدر: sass/libsass

لقد أضفنا القدرة على تضمين أجزاء CSS @import . هذا يختلف بشكل كبير عن سلوك Ruby Sass (الذي لا يسمح بذلك على الإطلاق) وهو أمر مفهوم يسبب الألم .

نحتاج إلى خيار سياق لتمكين / تعطيل هذه الميزة. يجب تعطيله بشكل افتراضي.

Bug - Confirmed Dev - PR Ready Invalid - Not in Sass

التعليق الأكثر فائدة

كما قال xzyfer ، جرب برنامج استيراد مخصص ، لقد واجهت مشكلة حيث كان لدينا ملفات .scss وملفات .css في نفس الدليل ، وهنا المستورد الذي صنعته لـ node-sass

importer: function(url, prev, done) {
    // Use this to import scss files, instead of css ones
    let updatedUrl = url;
    if (!url.endsWith('.scss') && !url.endsWith('.css')) { // Also don't change ones already explicitly set to .css
        updatedUrl += '.scss';
    }
    grunt.verbose.writeln(`Changed ${url} into ${updatedUrl}`);
    done({file: updatedUrl});
}

تم الاختبار مع node-sass 4.5.2 libsass 3.5.0-beta2

ال 11 كومينتر

أعتقد أن الصياغة مضللة بعض الشيء. نحن نسمح فقط باستيراد أجزاء css (سيتم ترك العناصر التي تنتهي بـ .css كاستيراد فعلي في الشفرة). أيضًا ، لا يسمح Ruby Sass بهذا افتراضيًا ، لكن بعض الأدوات (بوصلة AFAIK أيضًا) تتيح هذا افتراضيًا لـ Ruby Sass. لست متأكدًا أيضًا مما إذا كنا نريد حقًا تعطيله افتراضيًا ، لأن هذا سيكون تغييرًا محتملاً آخر.

class CSSImporter < Sass::Importers::Filesystem
  def extensions
    super.merge('css' => :scss)
  end
end
Sass::Plugin.options[:filesystem_importer] = CSSImporter

الكشف الكامل ما زلت أعتقد أنه يجب إزالة هذه الميزة. توجيهنا هو أن نفعل ما يفعله روبي ساس. أي انحراف عن تنفيذها يكسر قابلية النقل ، ولا يمكن تمييزه عن خطأ.

أيضًا ، لا يسمح Ruby Sass بهذا افتراضيًا ، ولكن بعض الأدوات (بوصلة AFAIK أيضًا) تمكّن هذا افتراضيًا لـ Ruby Sass

هذه ليست وظيفتنا. هذا ينتمي إلى عالم أدوات مثل ويلينغتون والنظارات.

لست متأكدًا أيضًا مما إذا كنا نريد حقًا تعطيله افتراضيًا

أعتقد بشدة أنه ينبغي.

سيكون هذا تغييرًا محتملاً آخر

السلوك الحالي معطل فيما يتعلق بمستخدمي Sass.

أعتقد أنه من الواضح أنني أؤيد امتلاك هذه الميزة وأردت فقط الإشارة إلى أن الانقطاع يرجع أساسًا إلى أنني قمت بتنفيذ رسالة الخطأ للواردات الغامضة لـ libsass 3.3.0. بالإضافة إلى ذلك ، فإننا نختلف بشكل افتراضي فقط في الحل الجزئي (بما في ذلك أيضًا امتداد css) ، وأنا أزعم أنك عادةً لا تنشئ أو لديك css بنفس الاسم بجانب استيراد _ جزئي. غير متأكد متى سأحضر لتنفيذ ذلك كخيار في C-API. نرحب بالمساهمين ؛)

أعتقد أن الوضع المثالي هو أن كلاهما يدعم هذه الميزات. أفضل شيء تالي هو ما يقوله xzyfer وعلى الأقل جعلهم متسقين ، حتى لو كان ذلك لا يعني أن أيًا منهم يدعمه.

يجب أن تكون قادرًا على التبديل من libsass إلى ruby ​​sass نظريًا دون كسر أي شيء. وجود شيء من شأنه أن يمنع عن قصد حدوث ذلك هو أمر سيء.

يجب أن تكون قادرًا على التبديل من libsass إلى ruby ​​sass نظريًا دون كسر أي شيء

بالضبط.

أفضل شيء تالي هو ما يقوله xzyfer وعلى الأقل جعلهم متسقين

هذا ما سنفعله.

سيقدم Sass 4.0 طريقة للقيام بذلك بشكل صحيح.

جميل! لا استطيع الانتظار.

mgreter لقد تحدثت إلى chriseppstein و @ nex3 حول هذه المشكلة. لقد قررنا أنه على الرغم من أن واردات CSS المضمنة تكسر توافق Ruby Sass إلى حد كبير ، إلا أن إزالة هذه الميزة من المحتمل أن تزعج المستخدمين. كانت هذه ميزة مطلوبة منذ فترة طويلة في Ruby Sass والتي لم تكن ممكنة بسبب القيود المفروضة على كونها مجموعة CSS شاملة. نتيجة لذلك ، يعتمد بعض الأشخاص تقريبًا على هذا السلوك.

دعنا بدلاً من ذلك نهدف إلى إزالة هذا في 4.0 نظرًا لأن المستخدمين يقبلون بشكل أكبر التغييرات العاجلة في الإصدارات الرئيسية ، ولأن لدينا طريقة رسمية لتضمين عمليات استيراد CSS.

لقد انتقلنا مؤخرًا إلى أحدث إصدار من Node من إصدار أقدم بكثير واضطررنا إلى ترقية مكتبة تابعة لجهة خارجية نستخدمها ، لتكون متوافقة مع إصدار Node الحالي. الآن تم كسر الأشياء في كل مكان بسبب هذا الخطأ. أتفهم أن هذه المشكلة لم يتم حلها في libsass حتى الآن ، لذلك أحاول التعرف بشكل متكرر على إصدارات تبعياتنا التي نحتاج إلى الرجوع إليها للتخلص من هذه المشكلة.

لذا ، بعض الأسئلة (معذرة ، إذا فاتني هذه المعلومات هنا ، فهذا الموضوع معقد بعض الشيء):

  1. ما هو إصدار libsass الذي تم تقديم هذا الخطأ فيه؟
  2. ما هو إصدار الإصلاح - 3.5؟ 4.0؟
  3. ما هو موعد إصدار هذا الإصدار؟ (أم أنه تم إطلاقه بالفعل ، ربما؟)

ما هو إصدار libsass الذي تم تقديم هذا الخطأ فيه؟

لا يمكنني أن أكون متأكدا. أعتقد أنه كان حول 3.3.0 وهو موجود في [email protected].

ما هو إصدار الإصلاح - 3.5؟ 4.0؟

سيتم إصلاح هذا في 4.0 بمجرد وصول @use . سيسمح للأشخاص صراحةً بالاشتراك في عمليات استيراد CSS.

ما هو موعد إصدار هذا الإصدار؟

من المستحيل أن أقول للأسف. من غير المحتمل أن يكون هذا العام.


جانبا إذا كنت تستخدم node-sass ، يمكنك كتابة مستورد مخصص لاستيراد noop لملفات .css.

كما قال xzyfer ، جرب برنامج استيراد مخصص ، لقد واجهت مشكلة حيث كان لدينا ملفات .scss وملفات .css في نفس الدليل ، وهنا المستورد الذي صنعته لـ node-sass

importer: function(url, prev, done) {
    // Use this to import scss files, instead of css ones
    let updatedUrl = url;
    if (!url.endsWith('.scss') && !url.endsWith('.css')) { // Also don't change ones already explicitly set to .css
        updatedUrl += '.scss';
    }
    grunt.verbose.writeln(`Changed ${url} into ${updatedUrl}`);
    done({file: updatedUrl});
}

تم الاختبار مع node-sass 4.5.2 libsass 3.5.0-beta2

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات

القضايا ذات الصلة

catamphetamine picture catamphetamine  ·  7تعليقات

xzyfer picture xzyfer  ·  9تعليقات

c0d3xpl0it picture c0d3xpl0it  ·  4تعليقات

GottZ picture GottZ  ·  3تعليقات

sgbeal picture sgbeal  ·  13تعليقات