استخدام Baseline مع Browserslist

تاريخ النشر: 7 أيار (مايو) 2025

Browserslist هي إحدى الأدوات الأكثر شيوعًا لضبط الحد الأدنى لإصدارات المتصفّحات المتوافقة في قواعد رموز الواجهة الأمامية. يضيف المطوّرون طلب بحث browserslist إلى ملف package.json، وتعرض Browserslist قائمة بالحد الأدنى من المتصفّحات المتوافقة. يمكن استخدام Browserslist مع مجموعة كبيرة من أدوات الفحص والتضمين وأدوات الحزمة الشائعة، بما في ذلك:

الاستهدافات الأساسية

عند اتخاذ قرار استخدام Baseline، يجب مراعاة قاعدة المستخدمين وتحديد مجموعة ميزات Baseline التي تريد استهدافها:

  • الإصدار الأساسي المتاح على نطاق واسع يتضمّن جميع ميزات الويب التي كانت متوافقة بالكامل مع مجموعة متصفّحات Baseline الأساسية قبل 30 شهرًا أو أكثر.
  • تتضمّن مجموعات ميزات السنة الأساسية، مثل السنة الأساسية 2020، جميع الميزات التي كانت متاحة حديثًا في نهاية السنة المحدّدة.

استنادًا إلى قاعدة المستخدمين لديك، قد تتمكّن من استهداف "البيانات الأساسية المتوفّرة على نطاق واسع"، أو قد تحتاج إلى استهداف سنة "بيانات أساسية" أقدم. راجِع إحصاءات موقعك الإلكتروني أو أدوات مراقبة المستخدمين في الوقت الفعلي لمعرفة إصدارات المتصفّحات التي يستخدمها المستخدمون.

تثبيت تطبيق "browserslist-config-baseline"

بعد تحديد مجموعة ميزات "القاعدة الأساسية" التي تريد استهدافها، يمكنك تطبيق هذا الاستهداف على أدوات المطوّرين. إنّ أبسط طريقة لإجراء ذلك لأي أدوات تستخدِم browserslist هي تثبيت browserslist-config-baseline:

# npm
npm i browserslist-config-baseline@latest -D

# yarn
yarn add --latest browserslist-config-baseline -D

# bun
bun add browserslist-config-baseline@latest -d

كيفية استهداف "المستوى الأساسي" المتوفّر على نطاق واسع

لاستهداف "المستوى الأساسي متاح على نطاق واسع"، عدِّل أو أضِف إعداد browserlist في package.json باستخدام الكلمة الرئيسية extends:

{
  ...
  "browserslist": [
    "extends browserslist-config-baseline"
   ]
  ...
}

عند تحميل browserslist لقائمة المتصفّحات المتوافقة، سينشئ browserslist-config-baseline ديناميكيًا الحد الأدنى الحالي لإصدارات المتصفّح التي تتيح جميع الميزات المتوفّرة على نطاق واسع الآن. يمكنك أيضًا إضافة extends browserslist-config-baseline إلى ملف .browserslistrc وسيتم التعامل معه بالطريقة نفسها.

كيفية استهداف سنوات الأساس

إذا كنت تريد استهداف مجموعة ميزات سنة أساسية، أضِف / والسنة بالتنسيق YYYY إلى نهاية طلب البحث browserslist:

"browserslist": "extends browserslist-config-baseline/2020"

كيفية تحديد المتصفّحات في مرحلة الإصدار

تتضمّن مجموعة المتصفّحات الأساسية في Baseline كلاً من Chrome وEdge وFirefox وSafari. تستند المتصفّحات الأخرى إلى رمز المصدر المفتوح نفسه المستخدَم في Chrome وEdge، وهو Chromium، ومن المفترض أن تتيح هذه المتصفّحات مجموعة الميزات نفسها المتوفّرة في أي إصدار من Chromium يتم استخدامه.

يستخدم browserslist-config-baseline baseline-browser-mapping لربط إصدارات المتصفّح بمجموعات الميزات التي تتوافق معها. تتوفّر عمليات الربط لمتصفّح UC Browser المتوافق مع الأجهزة الجوّالة ومتصفّح QQ Browser المتوافق مع الأجهزة الجوّالة في baseline-browser-mapping، وقد يتم تضمين متصفّحات أخرى في المستقبل.

لتضمين هذه المتصفحات في إعدادات Baseline، أضِف /with-downstream مباشرةً بعد اسم الوحدة في إعدادات browserslist:

"browserslist": "extends browserslist-config-baseline/with-downstream"

أو:

"browserslist": "extends browserslist-config-baseline/with-downstream/2020"

أمثلة على استخدام browserslist-config-baseline

في أدوات الحزم

يمكن أن يكون لإضافة browserslist-config-baseline إلى مستودعك تأثير فوري. Babel هي أداة إنشاء شائعة لحزمة JavaScript. في حال استخدام الإعدادات التلقائية لحزمة @babel/preset-env، سيتم استبدال العديد من واجهات برمجة التطبيقات والأساليب الحديثة في JavaScript ببنية أكثر تفصيلاً تتطلّبها المتصفحات القديمة:

جلسة محطة طرفية تعرِض أنّه تم تنفيذ الأمر npm run build على ملف JavaScript يُسمى test.js  حجم ملف الإخراج هو 12 كيلوبايت.

ومع ذلك، يؤدي ضبط browserslist-config-baseline لاستهداف Baseline 2020 في مثال المشروع نفسه إلى تقليل حجم إخراج JavaScript هذا بشكل كبير، لأنّه لا يلزم إجراء عدد كبير من عمليات تحويل البنية:

جلسة طرفية ثانية تُظهر أنّ الأمر npm run build قد أنشأ الآن ملفًا بحجم 1.5 كيلوبايت عند ضبط Babel لاستهداف Baseline 2020

يمكنك تجربة ذلك بنفسك باستخدام مثال على الرمز البرمجي في مستودع العروض التوضيحية الأساسية في Google Chrome Labs.

في برامج فحص الأخطاء

تعمل بعض أدوات فحص الأخطاء حاليًا مع Browserslist، أو يمكن جعلها تعمل مع Browserslist باستخدام وحدة توافق. على سبيل المثال، يمكن أن يستخدم stylelint إعدادات browserslist باستخدام وحدة stylelint-browser-compat. اضبط ملف stylelint.config.js لاستخدام browserslist-config-baseline:

module.exports = {
  plugins: ['stylelint-browser-compat'],
  rules: {
    'plugin/browser-compat': [
      true,
      {
        browserslist: ['extends browserslist-config-baseline'],
      },
    ],
  },
};

سيُبلغ Stylelint الآن عن ملفات CSS التي لا تشكّل حاليًا جزءًا من Baseline المتوفّرة على نطاق واسع:

قائمة بالتحذيرات من Stylelint التي تُبرز رمز CSS الذي لا يعمل على المتصفّحات القديمة

يوفّر Stylelint أيضًا مكوّنًا إضافيًا يتيح لك ضبط قواعد Baseline مباشرةً، ولكن إذا كنت تستخدم حاليًا browserslist للتعامل مع الإعدادات، يمكنك استخدام browserslist-config-baseline كحلّ بديل.

كيفية المساهمة في browserslist-config-baseline

إذا أردت طلب ميزة في browserslist-config-baseline، يمكنك إنشاء مشكلة أو طلب سحب في مستودع GitHub.

إذا أردت المساهمة بمزيد من بيانات المتصفّح في مرحلة ما بعد المعالجة أو الإبلاغ عن مشكلة في البيانات، يمكنك إنشاء مشكلة أو طلب سحب في مستودع baseline-browser-mapping.