خارطة طريق 2026

مرحبًا من عضو لجنة التوجيه الفني (TSC) في webpack Even!

يستمر المساهمون المختلفون في المنظمة في العمل على ضمان أن يظل webpack أداة صلبة وموثوقة لبناء تطبيقات الويب. في حين ظهرت العديد من الأدوات الجديدة، لا يزال webpack يمثل خيارًا مستقرًا ومدعومًا بشكل جيد.

إليك ما نحن متحمسون له في 2026

في عام 2026، يتجاوز تركيزنا مجرد الحفاظ على الميزات الحالية. نحن نستثمر في تحسينات تجعل webpack أسهل في الاستخدام والصيانة، مع الدفع قدمًا بالأفكار التي تُعد المشروع لبيئات التشغيل (runtimes) الحديثة، وأنماط التطوير المتطورة، والصحة طويلة المدى للنظام البيئي.

أدناه، سنستعرض المجالات الرئيسية التي نعمل عليها بنشاط والأفكار التي نخطط لتطويرها على مدار العام.

webpack#14893 - دعم CSS Modules دون الحاجة إلى إضافات (plugins)

يوجد حاليًا خيار experimental.css، والذي يُفعل الدعم الأصلي لـ CSS دون الحاجة إلى إضافة إضافات (plugins) إلى التكوين الخاص بك، كما كان مطلوبًا في السابق مع إضافات مثل mini-css-extract-plugin.

التطوير متقدم بالفعل بشكل جيد، مع إمكانية الانتهاء من تضمينه في النواة الأساسية لـ webpack في حوالي شهر فبراير/مارس. بعد ذلك، سيبقى الدعم تجريبيًا لفترة من الوقت لجمع تقارير الأخطاء، ولكن في webpack 6 لن يعود تجريبيًا ولن تكون هناك حاجة للإضافات لهذه المهمة.

يمكنك متابعة النقاش حول دعم CSS التجريبي للبقاء على اطلاع والمساهمة بالأفكار.

webpack#6525 - هدف شامل (universal target) لجعل الكود الخاص بك متوافقًا عبر بيئات التشغيل (runtimes)

الفكرة هي إضافة هدف (target) جديد يسمى universal (شامل)، والذي سيقوم بتحويل الكود الخاص بك بحيث يمكن تشغيله عبر بيئات تشغيل مختلفة، بما في ذلك Node و الويب و Bun و Deno، إلخ. بغض النظر عما إذا كنت تستخدم وحدات CommonJS في تطبيقك، سيكون webpack قادرًا على تغليفها، وسيكون كل الكود الناتج عبارة عن ESM خالص، مما يجعله غير معتمد على بيئة تشغيل محددة (runtime-agnostic).

كان هناك تقدم كبير نحو هذا الهدف بالفعل، ولكن مخرجات ESM لم تكتمل بالكامل بعد. لا تزال هناك حاجة إلى إصلاحات وتحسينات إضافية (انظر webpack#17121)، إلى جانب إضافة الاختبارات المفقودة وإكمال وظيفة تغليف CommonJS (CommonJS wrapper).

يمكنك أيضًا الانضمام إلى النقاش حول الهدف الشامل (universal target) لمشاركة أفكارك أو متابعة التحديثات حول التوافق عبر بيئات التشغيل.

دعم بناء TypeScript بدون محملات (loaders)

مؤخرًا، في الإصدار 5.105 قمنا بتضمين دعم لـ تحليل المسارات المحددة في تكوين TypeScript، مما يلغي الحاجة لاستخدام إضافة (tsconfig-paths-webpack-plugin). الآن نريد توسيع دعم TypeScript بشكل أكبر عن طريق إزالة الحاجة إلى استخدام محمل (loader) (أكثرها شيوعًا هو ts-loader) لتحويل TypeScript البرمجي (transpile) مباشرة في webpack، مما سيقلل أيضًا من تبعيات مشروعك (dependencies).

webpack#536 - استيراد ملفات HTML واستخدامها كنقاط دخول (entry points) دون الحاجة لإضافات

حاليًا، لاستيراد ملفات HTML واستخدامها كنقاط دخول، من الضروري استخدام إضافة (html-webpack-plugin). الفكرة هي دمج تلك الإضافة في النواة الأساسية لـ webpack نفسها، على غرار كيفية التعامل مع CSS Modules، وإزالة الحاجة إلى إضافة لمثل هذه المهمة الشائعة. ومثل CSS Modules، سيتم تقديم هذا كـ خيار تجريبي، بحيث تتمكن في webpack 6 من إزالة تلك التبعية.

يمكنك متابعة الفكرة وتقدمها في المشكلة ذات الصلة (#536).

Webpack في كل مكان (Node, Deno, Bun, والويب)

لا يزال Node.js يمثل بيئة التشغيل الافتراضية للعديد من المشاريع، لكن الأوقات تغيرت ولم يعد هو بيئة تشغيل JavaScript الوحيدة. اكتسبت الخيارات الجديدة مثل Deno و Bun شعبية كبيرة، ويجب أن يعمل webpack بسلاسة عبر جميعها.

الهدف هو بناء webpack بحيث يمكن تشغيله في كل مكان: في Node.js، وفي بيئات الويب، وفي بيئات التشغيل البديلة مثل Deno و Bun. حتى عند استخدام وحدات (modules) مرتبطة تقليديًا بـ Node.js، مثل node:fs، سيتعامل معها webpack بذكاء، مما يتيح للكود الذي يعتمد على هذه الوحدات أن يعمل في المتصفح أو البيئات الأخرى التي لا توجد فيها هذه الوحدات.

لتحقيق ذلك، نحن بحاجة إلى تقليل الاعتماد على النواة الداخلية لـ Node.js (Node.js internals) واستخدام Buffer، والتحرك نحو بنية أقل اعتمادًا على بيئة تشغيل محددة (runtime-agnostic architecture)، وتوسيع تغطية الاختبارات.

حاليًا، يفتقر دعم Deno إلى اختبارات مناسبة، بينما لا يزال Bun يفتقر إلى الأصول المطلوبة والاختبارات المقابلة. بالإضافة إلى ذلك، يتضمن هذا الجهد إضافة ساحة لعب في الموقع (site playground) للتحقق من وعرض webpack وهو يعمل في بيئات مختلفة.

تقييم تحسين البرميل الكسول (Lazy Barrel Optimization)

من الأفكار المثيرة للاهتمام لاستكشافها هو تحسين البرميل الكسول، المستوحى من كيفية تعامل Rspack مع أنماط وحدات معينة. في Rspack، يعد البرميل الكسول تحسينًا يتخطى بناء الوحدات المعاد تصديرها غير المستخدمة في ملفات البرميل الخالية من الآثار الجانبية حتى يُحتاج إليها فعليًا. يمكن أن يقلل هذا من وقت البناء بشكل كبير، خاصة في قواعد التعليمات البرمجية الكبيرة (codebases) التي تحتوي على الكثير من الصادرات المجمعة.

ملفات البرميل (Barrel files) هي وحدات تعيد تصدير وحدات أخرى لإنشاء واجهة برمجة تطبيقات (API) مريحة. على سبيل المثال، ملف components/index.js يقوم بتصدير كل مكون من مجلد. على الرغم من فائدتها لتنظيم الكود، فإن المحزمات التقليدية (bundlers) غالبًا ما تبني جميع الوحدات المعاد تصديرها حتى لو تم استخدام واحدة فقط، مما قد يضر بالأداء. باستخدام تحسين البرميل الكسول في Rspack، يتم بناء الوحدات المشار إليها فعليًا فقط، متخطيًا الباقي ومحسنًا سرعة البناء الإجمالية.

يمنحنا تقييم نهج Rspack فرصة لمعرفة ما إذا كانت استراتيجية مماثلة يمكن أن تفيد webpack، وتحسن الأداء حول أنماط البرميل الشائعة الاستخدام دون مطالبة المطورين بإعادة هيكلة صادراتهم يدويًا. إنه مثال على التطلع إلى الابتكارات في النظام البيئي لإثراء التحسينات المستقبلية المحتملة لـ webpack.

تبسيط تصغير الأصول (Asset Minimization) في Webpack

يعتمد Webpack حاليًا على إضافات تصغير منفصلة ومتعددة، مثل terser-webpack-plugin، و css-minimizer-webpack-plugin، و html-minimizer-webpack-plugin، و json-minimizer-webpack-plugin. في حين أن كل واحدة منها تعمل بشكل جيد بمفردها، فإن إدارتها بشكل فردي تضيف عبئًا إضافيًا في التكوين والصيانة.

الفكرة هي دمج كل هذه في إضافة واحدة minimizer-webpack-plugin، مما يوفر تجربة تصغير أكثر توحيدًا واتساقًا. سيؤدي ذلك إلى تبسيط التكوين، وتقليل التكرار، وجعل من السهل توسيع وصيانة منطق التصغير عبر أنواع الأصول المختلفة.

تبسيط تجربة تطوير (Dev Experience) Webpack

يتم تحسين أدوات التطوير وواجهة سطر الأوامر (CLI) لـ Webpack لتعزيز قابلية الصيانة مع تقديم ميزات جديدة للمساهمين والمستخدمين على حد سواء.

أدوات التطوير (Dev Tooling)

تركز الجهود المبذولة في أدوات التطوير على تحسين سير عمل التطوير الداخلي لـ webpack وتسهيل توسيعه وصيانته. يتضمن ذلك دمج webpack-dev-middleware و webpack-hot-middleware، و استخراج التراكب (overlay) من dev-server، و توحيد منطق التراكب + WebSocket/EventSource لإعادة استخدامه.

بالإضافة إلى ذلك، سيتم إضافة دعم للإضافات (plugin support) إلى dev-server، مما يتيح المزيد من المرونة ويقلل من التكرار. هذه التحسينات تبسط التطوير للمساهمين بينما تبقي webpack مرنًا وموثوقًا للمستخدمين.

تحسينات CLI

يتم تحسين واجهة سطر الأوامر لتصبح أسهل في الصيانة و أكثر قابلية للاستخدام. يتضمن العمل توحيد الحزم، و إعادة صياغة منطق المساعدة والأوامر الفرعية، و تحسين تجربة المطور الشاملة (انظر webpack-cli#4619).

هذه التغييرات تجعل من السهل على المساهمين الحفاظ على واجهة سطر الأوامر مع توفير تحسينات عملية للمطورين الذين يعملون مع webpack في مشاريعهم.

يمكنك متابعة مناقشة تحسينات webpack-cli للبقاء على اطلاع.

توثيق دقيق وموثوق

الفكرة هي تمكين التوليد التلقائي لجميع وثائق واجهة برمجة التطبيقات (API) والتكوين مباشرة من أنواع (types) ومخططات (schemas) webpack، مما يضمن أن التوثيق يطابق دائمًا السلوك الفعلي للكود (خيارات API الجديدة، حالات الإهمال (deprecations)، الأنواع، إلخ).

يعالج هذا النهج المشاكل طويلة الأمد المتعلقة بـ الوثائق غير المكتملة أو غير المتسقة على موقع webpack، ويجعل صيانتها أسهل. الهدف هو تزويد المطورين بـ مراجع دقيقة وموثوقة ومحدثة تمنح المستخدمين طريقة سهلة للتفاعل مع webpack.

التواصل مع المجتمع والمشاركة

بعد إدخال تحسينات على الوثائق والصيانة النشطة، ينصب تركيز رئيسي آخر على بناء وتقوية مجتمع webpack. بدأ هذا الجهد هذا العام من خلال مدونة جديدة تم إطلاقها للإصدار 5.105 لـ webpack، والفكرة هي مواصلة توسيع تواصلنا من خلال المقالات والمحادثات في المؤتمرات والقنوات العامة الأخرى.

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

واجهة برمجة تطبيقات لتعدد مؤشرات الترابط (Multithreading API)

يستكشف Webpack واجهة برمجة تطبيقات لتعدد مؤشرات الترابط، مستوحاة من thread-loader، لجلب قدرات معالجة متوازية أفضل إلى النواة الأساسية.

الهدف هو السماح لـ webpack بالاستفادة من الأنظمة متعددة النوى، مما يحسن أداء البناء لـ المشاريع الكبيرة. لا يزال هذا الجهد في مرحلة التصميم والمناقشة، بهدف إنشاء حل مرن وقابل للصيانة وسهل الاستخدام.

من خلال دمج تعدد مؤشرات الترابط بطريقة رسمية أكثر، يأمل webpack في تزويد المطورين بـ عمليات بناء أسرع مع الحفاظ على التكوين والمنطق الداخلي نظيفًا وقابلاً للتوسع. يعكس هذا العمل استكشافًا مستمرًا بدلاً من ميزة نهائية، ويظل thread-loader الحل الحالي المدعوم من المجتمع للموازاة (parallelization).

التصميم والهوية البصرية

نريد تحسين الهوية البصرية الإجمالية لـ webpack من خلال إنشاء أصول تصميم جديدة للمشاريع والمنتجات (swag). ويشمل ذلك أشياء مثل اللافتات، والملابس، وزجاجات المياه، وأكواب القهوة، والجوارب، ومواد أخرى تحمل العلامة التجارية.

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

الإرشاد في GSoC

من الاهتمامات الرئيسية توجيه الطلاب من خلال برنامج Google Summer of Code (GSoC)، وهو جهد تطوعي يهدف إلى تعليمهم كيفية الحفاظ بفعالية على مشاريع مفتوحة المصدر.

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

هذه التجربة تزودهم بالمهارات اللازمة ليصبحوا مشرفين في المستقبل (maintainers)، ولا يساهمون فقط في webpack ولكن أيضًا في النظام البيئي الأوسع مفتوح المصدر، والذي يعتمد بشكل كبير على المتطوعين.

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

التبرعات والرعايات

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

يُعد زيادة التبرعات والرعايات أمرًا بالغ الأهمية لأنه كلما توفر المزيد من التمويل، ازداد الوقت الذي يمكن للمساهمين الأساسيين تكريسه لـ صيانة وتحسين webpack، على الرغم من مسؤولياتهم الأخرى وحياتهم الشخصية.

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

التحضير لـ Webpack 6

كل الجهود المذكورة في هذه المدونة، من تعزيز دعم بيئات التشغيل (Node و Deno و Bun والأهداف الشاملة)، إلى تحسين الوثائق وأدوات المطور، وتوجيه المساهمين الجدد من خلال GSoC، إلى استكشاف تعدد مؤشرات الترابط والتحسينات مثل البرميل الكسول، تمهد الطريق نحو webpack 6.

تحسينات النواة (Core) والمحمل (Loader)

للتحضير لـ webpack@6 وتبسيط المنطق الداخلي، تتضمن الجهود نقل loader-runner إلى النواة لتوحيد التعامل مع سياق المحمل. يساعد هذا في تقليل التكرار، وتحسين قابلية الصيانة، ويضع الأساس للتحسينات المستقبلية.

بالإضافة إلى ذلك، فإن تقليل المهام الداخلية المؤجلة (TODOs) عبر قاعدة التعليمات البرمجية يضمن أساسًا أكثر نظافة ويسهل على المساهمين العمل بكفاءة.

الاختبار وتغطية الأنواع (Type Coverage)

تُعد تحسين تغطية الاختبار و تقوية تغطية الأنواع أولويات رئيسية. من خلال تقليل استخدام الأنواع الفضفاضة مثل any و unknown، يصبح webpack أكثر موثوقية وأسهل في الصيانة. الأنواع القوية والاختبارات الشاملة تساعد على اكتشاف المشكلات مبكرًا وتحسن الثقة لدى المساهمين عند إجراء تغييرات.

المقارنات المعيارية (Benchmarks) والأداء

لقياس التقدم والحفاظ على معايير أداء عالية، يخطط webpack لإضافة المزيد من المقارنات المعيارية. يتيح دمج هذه المقارنات في مسارات CI مقارنات عبر الإصدارات، مما يضمن أن التحسينات تستمر في تقديم تحسينات ملموسة للمطورين.

ملاحظات ختامية

آمل أن تجد هذه القائمة مفيدة وأن تكون متحمسًا لعام 2026، نحن كذلك! أحد أهم أجزاء عملنا الآن، هو الحصول على تبرعات كافية للحفاظ على استدامة المشروع. نحن نستخدم مواردنا لـ الدفع للمساهمين بمجرد وصولهم إلى حد معين. بالإضافة إلى ذلك، نريد التأكد من أنه بمرور الوقت، سيحتوي المشروع على بعض الموارد المتبقية التي يمكننا توفيرها للأوقات الصعبة.

هذا العام سنحاول شيئًا جديدًا، وهو أن يكون لدينا أقسام مخصصة حيث ستحظى الشركات/الأفراد الذين يساهمون بمبلغ كبير بمكان لـ عرض منتجاتهم/مشاريعهم/عروضهم الترويجية.

شكرًا لاهتمامك ولرغبتك في معرفة خارطة طريقنا لعام 2026. إذا كنت فضوليًا بشأن المساهمة في المنظمة سواء ماليًا أو بأي شكل آخر، فأرسل لنا رسالة خاصة أو عامة في Discord، أو تواصل معنا عبر البريد الإلكتروني أو اتصل بأحد أعضاء TSC.

~ لجنة التوجيه الفني في webpack 💙

Edit this page·
« Previous
Webpack 5.106

2 Contributors

ameencfwRlxChap2