كان تثبيت Node بطيئًا لسنوات. عند تشغيل npm install، غالبًا تذهب لتحضير قهوتك وتعود لتجد CI مازال يعمل على حل @types/node. لكن Aube يغيّر هذه المعادلة: تثبيت دافئ في CI لمشروع فيه 1,400 حزمة يتم في 139 مللي ثانية فقط، أسرع بـ 7.3 مرة من pnpm و3 مرات من Bun على نفس الجهاز. الأهم: يقرأ ويكتب ملف القفل الحالي، فبإمكانك تجربته فورًا دون الحاجة لترحيل الفريق.
هذا المقال يشرح باختصار ماهو Aube، كيف يحقق هذه السرعة، خطوات تثبيته، مقارنته بـ pnpm وnpm وyarn وBun، ولماذا هو عملي إذا كنت تبني واجهات APIs باستخدام أدوات مثل Apidog.
ما هو Aube؟
Aube هو مدير حزم Node.js سريع طورته en.dev ومرخص MIT. الاسم يعني "الفجر" بالفرنسية. المشروع بيتا (v1.0.0-beta.10) ويستهدف توافق pnpm v11.
يستعمل Aube نفس نمط التخزين على القرص مثل pnpm (متجر عالمي قابل للعنونة وتخطيط symlink معزول)، ولكن التثبيت مكتوب بلغة أصلية متعددة الخيوط بدل JavaScript، ما يسمح بسرعة أعلى حتى من Bun مع الحفاظ على كتابة pnpm-lock.yaml كما هو.
ميزة مهمة: Aube يقرأ pnpm-lock.yaml، package-lock.json، npm-shrinkwrap.json، yarn.lock وbun.lock مباشرة. يمكنك استخدامه محليًا بينما الفريق وCI مازال على pnpm، دون تغيير سير عمل أي شخص.
معايير Aube: السرعة بالأرقام
تم قياس الأداء على مشروع حقيقي فيه 1,400 حزمة باستخدام hyperfine. كل سيناريو يفترض وجود ملف قفل ملتزم. الفرق الرئيسي: "دافئ" يمسح node_modules فقط ويحافظ على المخزن العالمي، و"بارد" يمسح كل شيء.
الأرقام الرسمية (المصدر):
| السيناريو | aube | bun | pnpm | yarn | npm |
|---|---|---|---|---|---|
| تثبيت CI (ذاكرة دافئة، بدون node_modules) | 139 مللي ثانية | 416 مللي ثانية | 1.01 ثانية | 2.43 ثانية | 2.78 ثانية |
| تثبيت CI (ذاكرة باردة) | 1.12 ثانية | 935 مللي ثانية | 1.57 ثانية | 6.60 ثانية | 4.21 ثانية |
| install && run test (مثبت بالفعل) | 21 مللي ثانية | 42 مللي ثانية | 453 مللي ثانية | 351 مللي ثانية | 615 مللي ثانية |
| إضافة تبعية (add is-odd) | 209 مللي ثانية | 414 مللي ثانية | 1.33 ثانية | 2.55 ثانية | 2.89 ثانية |
- رقم تثبيت CI الدافئ هو الأهم لأنه يعكس الوضع الفعلي في أغلب مشاريع الفرق (ذاكرة التخزين المؤقت موجودة). هنا، Aube أسرع بـ 7.3 مرة من pnpm و3 مرات من Bun.
- سيناريو
install && run testيمثل الحلقة اليومية: Aube يتجاهل التثبيت بالكامل في حال عدم وجود تغييرات، فتأخذ العملية 21 مللي ثانية فقط، بينما الأدوات الأخرى تستهلك مئات المللي ثانية. - في السيناريو البارد، Bun أسرع بسبب مسار جلب الحزم، لكن هذا السيناريو نادر (عادة عند مسح الجهاز أو أول تثبيت).
يمكنك تكرار القياسات بنفسك عبر mise run bench من مستودع Aube.
لماذا Aube أسرع من pnpm وBun؟
ثلاث نقاط تصميم أساسية:
- تثبيت أصلي ومتعدد الخيوط: كل من npm وpnpm وyarn تستخدم Node.js في تنفيذ التثبيت، ما يفرض ضريبة إضافية على كل عملية. Aube ينقل المسار الحرج إلى وقت تشغيل أصلي، متعدد الخيوط، مخصص فقط للتثبيت.
- المتجر الافتراضي العالمي (Global Virtual Store): بينما pnpm v11 يدعم ذلك لكنه ليس الافتراضي، Aube يعتمد عليه افتراضيًا. المشاريع المتكررة تشارك نفس ملفات الحزم الفعلية، ما يوفر مساحة ضخمة على القرص.
-
اختصار التثبيت عند عدم التغيير: إذا لم يتغير
package.jsonأو ملف القفل، فإنaube run testيتخطى التثبيت بالكامل.
النتيجة: معظم التثبيتات "لم يتغير شيء" تستهلك أقل من 25 مللي ثانية.
كيفية تثبيت Aube
أفضل طريقة عبر mise:
mise use -g aube
تحقق من التثبيت:
aube --version
أو عبر npm:
npm install -g @endevco/aube
أو عبر Homebrew على macOS/Linux:
brew install endevco/tap/aube
لتثبيت محلي داخل المشروع:
mise use aube
هذا سيضيف aube إلى mise.toml ليحصل كل من يدخل المشروع على نفس الإصدار تلقائيًا. مزيد من الخيارات في وثائق التثبيت.
أوامر Aube اليومية
واجهة الأوامر مشابهة جدًا لـ pnpm:
aube install # تثبيت التبعيات
aube add react # إضافة تبعية
aube add -D vitest # إضافة تبعية تطوير
aube remove react # إزالة تبعية
aube update # تحديث التبعيات
aube run build # تشغيل سكريبت build
aube test # تشغيل سكريبت test مع تثبيت تلقائي
aube exec vitest # تشغيل ثنائي محلي
aube dlx cowsay hi # تشغيل حزمة مؤقتة
aube ci # تثبيت مجمد ونظيف في CI
يمكنك استخدام شيمز متعددة الاستدعاءات:
aubr build # aube run build
aubx cowsay hi # aube dlx cowsay hi
استخدم aube ci في CI: يحذف node_modules ويتحقق من حداثة ملف القفل ويفشل بصوت عالٍ عند وجود مخالفة.
توافق ملفات القفل
Aube يقرأ ويكتب مباشرة في مكانه لملفات القفل التالية:
| ملف القفل | يقرأ | يكتب |
|---|---|---|
| aube-lock.yaml | نعم | نعم |
| pnpm-lock.yaml v9 | نعم | نعم |
| package-lock.json v2/v3 | نعم | نعم |
| npm-shrinkwrap.json | نعم | نعم |
| yarn.lock (v1, v2+) | نعم | نعم |
| bun.lock | نعم | نعم |
مثال عملي: فريقك على pnpm، CI يشغل pnpm install --frozen-lockfile، وأنت محليًا على aube install، والكل يشارك نفس ملف القفل بدون تعارض.
ملحوظة: ملفات pnpm-lock القديمة (v5/v6) تحتاج ترقية، ومشاريع yarn PnP تحتاج العودة إلى node_modules.
إعدادات افتراضية أمانة
حوادث سلسلة توريد npm أصبحت شائعة. Aube يضيف ثلاث طبقات أمان افتراضية:
- حد أدنى لعمر الإصدار: لن تثبت الحزم فور صدورها (قابل للتخصيص).
- حظر التبعيات الغريبة: يمنع التبعيات غير الطبيعية تلقائيًا.
-
موافقة صريحة على سكريبتات التبعيات: سكريبتات postinstall محظورة افتراضيًا، وتحتاج موافقة عبر
aube approve-builds.
هذه السياسات لا تقدم حماية مطلقة، لكنها تقلل خطر المفاجآت.
تخطيط node_modules معزول
Aube يستخدم تخطيط معزول: التبعيات المعلنة فقط تظهر في node_modules/، والتبعيات الانتقالية خلف node_modules/.aube/. ملفات الحزم محفوظة مرة واحدة في ~/.local/share/aube/store/.
- مشاريع متعددة تشارك نفس الملفات
- منع الواردات الوهمية
- تثبيتات مكررة سريعة جدًا
لو واجهت مشاكل مع حزم تعتمد على واردات وهمية، أضفها إلى package.json.
دعم مساحات العمل والمستودعات المتعددة
يدعم Aube مساحات العمل وبروتوكول workspace::
aube install -r
aube run test -r
aube add zod --filter @acme/api
يقرأ pnpm-workspace.yaml ويكتبه، أو aube-workspace.yaml للمشاريع الجديدة.
في مستودعات الـ API الكبيرة، فرق التثبيت التراكمي يوفر دقائق يوميًا عند العمل على عدة حزم.
Aube في سير عمل تطوير API
أثناء تطوير واختبار الـ APIs، سرعة التثبيت مهمة لأنها الفاصل بين "عدلت" و"اختبرت". حلقة عمل عملية:
- صمّم API في Apidog.
- أنشئ العميل أو شغّل اختبارات العقد في مشروع Node.
- استخدم Aube محليًا لتثبيتات شبه فورية أثناء التطوير.
- نفّذ نفس الخطوات في CI عبر
aube ci.
توجه المطورين للأدوات السريعة والآمنة، وAube يغطي جانب التثبيت في هذه الحلقة.
الترحيل من مديري الحزم الأخرى
من npm: شغّل aube install، سيقرأ ويكتب package-lock.json وينتج node_modules معزول. أضف أي تبعية ناقصة إلى package.json. دليل npm الكامل.
من pnpm: أقل ترحيل احتكاكًا. يقرأ pnpm-lock.yaml v9 ويدعم workspace وفلترة الحزم.
من yarn: يدعم ملفات قفل v1 وv2+. مستخدمو Yarn PnP يحتاجون العودة إلى node_modules.
من Bun: يقرأ bun.lock. Aube مستقل عن وقت تشغيل Bun.
اعتبارات واقعية
- حالة البيتا: v1.0.0-beta.10 (أبريل 2026). جربه محليًا أولًا، لا تعتمد عليه في الإنتاج إلا بعد اختبار كافٍ.
- نطاق الأوامر: إدارة وقت التشغيل (env, runtime...) ليست ضمن Aube بل mise. بعض أوامر التسجيل توجهك لـ npm.
- دعم المنصات: mise يدعم macOS, Linux, Windows عبر WSL. دعم Windows الأصلي مازال مبكرًا.
- المجتمع: صغير لكن نشط، قناة Discord و325 نجمة على GitHub.
الأسئلة الشائعة
- ماذا تعني "aube"؟ تعني "الفجر" بالفرنسية.
- هل Aube بديل مباشر لـ pnpm؟ نعم تقريبًا، توافق عالٍ مع pnpm v11. بعض الأوامر خارج النطاق.
- هل يمكن استخدام Aube في CI مع بقاء pnpm محليًا؟ نعم، ويمكن العكس. كلا الأداتين تشتركان في ملف القفل.
- كيف يقارن بـ Bun؟ أسرع في التثبيتات الدافئة، أبطأ قليلاً في الباردة. Aube أداة تثبيت فقط وليست وقت تشغيل JS.
- هل يعمل على Windows؟ نعم عبر WSL. دعم Windows الأصلي قيد التطوير.
- هل هو مفتوح المصدر؟ نعم، MIT، والكود على GitHub.
- ما مصير ملف pnpm-lock.yaml؟ يُقرأ ويُكتب كما هو، ولا يوجد تعارض مع فريقك.
الخلاصة
لأغلب مشاريع Node في 2026، خطوة التثبيت أبطأ مما يجب. Aube هو أسرع مدير حزم في سيناريوهات التثبيت الواقعية: 139 مللي ثانية لتثبيت CI لمشروع كبير، 21 مللي ثانية لتنفيذ install && test بدون تغيير، وتوفير هائل في مساحة القرص. يقرأ ملف القفل الحالي، ويضيف افتراضات أمان، ويكفيه سطر mise use aube لتجربته.
إذا كنت بالفعل تستخدم أدوات API سريعة مثل Apidog، أضف Aube إلى جانبها وستحصل على حلقة تطوير أسرع وأأمن. حمّل Apidog إذا لم تكن قد فعلت، وجرّب الإثنين معًا في مشروعك القادم.

Top comments (0)