يشبه معالجة Vite مع الظروف المتداخلة في الصادرات الشرطية الحزم الحديثة الأخرى مثل Rollup و WebPack ، ولكن مع بعض الاختلافات الرئيسية:
ترتيب التعشيش والخصوصية
- Vite: يمكن أن تتلألأ الشروط في مجال "الصادرات" من "package.json". يجب تحديدها من الأكثر تحديدا إلى الأقل تحديدا. سوف تتطابق Vite مع الحالة الأولى الموجودة في قائمة الشروط المسموح بها [1].
- Rollup: تدعم Rollup الظروف المتداخلة في حقل "الصادرات" ، باتباع نفس ترتيب الخصوصية مثل Vite [2].
- WebPack: يدعم WebPack أيضًا الظروف المتداخلة في حقل "الصادرات" ، مما يتطلب نفس ترتيب الخصوصية مثل Vite و Rollup [3].
الظروف المسموح بها
- Vite: يحتوي على قائمة محددة مسبقًا من الشروط المسموح بها التي تتضمن "الاستيراد" و "الوحدة النمطية" و "المستعرض" و "الافتراضي" و ظروف خاصة بالبيئة مثل "الإنتاج" أو "التطوير". يمكن لخيار التكوين `حل.
- Rollup: يسمح بتحديد الظروف المخصصة عبر خيارات "الحفاظ على المحافظين" و "المحافظين على الجاذبية" [2].
- WebPack: يسمح بتحديد الظروف المخصصة عبر خيار `desolve.conditionNames` [3].
التعامل مع الشروط غير الصحيحة
- Vite: إذا لم يتم تنظيم الشروط بشكل صحيح أو تحدد Vite تصديرًا غير صحيح ، فقد يؤدي ذلك إلى أخطاء وقت التشغيل. الهيكلة الدقيقة لحقل "الصادرات" أمر بالغ الأهمية [1].
- Rollup: سوف يقوم Rollup بتسجيل تحذيرات إذا واجهت مشكلات مع حقل "الصادرات" ، ولكن قد لا يزال يحل نقطة الدخول [2].
- WebPack: ستقوم WebPack بتسجيل الأخطاء إذا كان حقل "Exports` مشوهًا أو إذا لم يتمكن من حل نقطة الدخول [3].
monorepo دعم
- Vite: يكتشف تلقائيًا التبعيات المرتبطة في المونوروبو ويعاملها كرمز مصدر ، وتحليل تبعياتها بدلاً من تجميعها [4].
- Rollup: يتطلب استخدام مكونات إضافية مثل `@rollup/plugin-alias` للتعامل مع التبعيات المرتبطة في monorepo [2].
- WebPack: يتطلب استخدام مكونات إضافية مثل "المحسّن" للتعامل مع التبعيات المرتبطة في Monorepo [3].
باختصار ، يشبه معالجة Vite مع الظروف المتداخلة الحزم الأخرى ، ولكن لديها بعض المزايا مثل دعم Monorepo التلقائي وقائمة الظروف المسموح بها أكثر قوة. ومع ذلك ، فإن جميع الحزم تتطلب هيكلة دقيقة لحقل "الصادرات" لتجنب القضايا.
الاستشهادات:[1] https://v2.vitejs.dev/config/
[2] https://vitejs.dev/guide/features
[3] https://vitejs.dev/guide/dep-pre-bundling
[4] https://vitejs.dev/guide/build
[5] https://vitejs.dev/config/shared-options