عن المشروع

Webpack هو حزم وحدات (module bundler) يهدف بشكل أساسي إلى تجميع ملفات JavaScript لاستخدامها في المتصفح، مع القدرة على تحويل أو تجميع أو تغليف أي مورد أو أصل تقريبيًا. يمكن تثبيته باستخدام npm أو yarn. يدعم بشكل افتراضي وحدات ES2015+ وCommonJS وAMD (حتى عند دمجها). يتم حل التبعيات أثناء عملية الترجمة (compilation)، ويمكن للأداة إنشاء حزمة واحدة أو قطع متعددة تُحمّل بشكل غير متزامن عند التشغيل. تتيح الـ Loaders المعالجة المسبقة للملفات (مثل تحويل TypeScript إلى JavaScript، والقوالب، ومعالجات CSS، أو الصور)، بينما يوسع نظام الإضافات عالي التعديل الوظائف المتاحة. تذكر قائمة المشروع الـ Loaders الخاصة بالترجمة (transpiling)، والتضمين (templating)، والتنسيق، والأطر (Babel, TypeScript, CoffeeScript, Pug, Markdown, PostHTML, Handlebars, LESS, Sass, Stylus, PostCSS, Vue, Polymer, Angular 2, Riot, Svelte). يدعم Webpack أيضًا تقسيم الكود (code splitting) لتقليل وقت التحميل الأولي، ويقوم بتحسينات مثل إزالة التكرار (deduplication)، والتصغير (minification)، وتجزئة المحتوى (content hashing) لقطع ودودة للذاكرة المؤقتة. يستخدم Webpack عمليات إدخال/إخراج غير متزامنة (async I/O) ومستويات متعددة من التخزين المؤقت، مما يجعله سريعًا في عمليات الترجمة التدريجية. دعم المتصفحات موجه للمتصفحات المتوافقة مع ES5؛ قد تحتاج المتصفحات الأقدم إلى استخدام polyfills للميزات القائمة على الوعود (Promise-based) مثل import() وrequire.ensure().