عن المشروع
ncc هي أداة سطر أوامر يحافظ عليها فريق Vercel، تقوم بجمع برنامج Node.js مع جميع تبعياته في ملف إخراج واحد، على غرار أسلوب التجميع في gcc. يهدف تصميمها إلى عدم الحاجة لأي تكوين: ما عليك سوى توجيهها إلى ملف الإدخال لتنتج بناءً مضغوطاً، حيث يتم التعامل مع TypeScript بشكل أصلي عند وجود ملف tsconfig.json.
الأوامر الرئيسية تشمل `build` (لإصدار ملف مجمع في دليل الإخراج، افتراضياً dist/index.js)، و`run` (للبني في دليل مؤقت وتنفيذه مع دعم كامل لخرائط المصدر للاختبار والتصحيح)، و`cache` (للتنظيف أو الفحص أو قياس حجم ذاكرة التخزين المؤقت). تغطي الخيارات احتياجات التجميع الشائعة مثل `--minify` للتصغير، و`--source-map` لخرائط المصدر، و`--external` لتخطي حزم محددة، و`--watch` لإعادة البناء التدريجي، و`--target` لتحديد مستوى ECMAScript، و`--v8-cache` لإصدار ذاكرة تخزين مؤقت لـ V8، و`--license` لإرفاق معلومات الترخيص، و`--stats-out` لتصدير إحصائيات webpack كملف JSON، و`--asset-builds` لجمع الأصول الفرعية المتداخلة مثل نصوص العمال. يتم استنتاج تنسيق الوحدة النمطية من الإدخال، بحيث تنتج مدخلات .mjs أو الملفات داخل حدود حزمة "type": "module" مخرجات ES Module، بينما تحافظ مدخلات .cjs على امتداد CommonJS.
بeyond الواجهة السطرية، تعرض ncc واجهة برمجة تطبيقات برمجية من Node.js. استدعاء `require('@vercel/ncc')` بمسار إدخال وكائن خيارات يعيد وعداً يحل إلى `{ code, map, assets }`، حيث تمثل assets خريطة لأسماء الملفات ومصادرها وأذوناتها وبيانات الروابط الرمزية. تعكس الخيارات أعلام الواجهة السطرية، بما في ذلك مسارات التخزين المؤقت المخصصة، والحزم الخارجية، والتصغير، وخرائط المصدر، ووضع المراقبة، وإنشاء التراخيص، واختيار الهدف. في وضع المراقبة، تعرض الكائن المرتجع دوال رد الاتصال `handler` و`rebuild` و`close` بدلاً من الوعد.
الدوافع المعلنة للمشروع هي نشر حزم npm بأقل حجم ممكن، وتسليم الكود ذي الصلة فقط إلى بيئات serverless، وتجنب عبء تكوين أدوات التجميع، وتحسين وقت الإقلاع وعملية I/O. يستهدف برامج Node.js كمدخلات ومخرجات ويهدف لدعم جميع أنماط Node.js ووحدات npm. هناك تحذير موثق مفاده أن إعادة توطين الملفات والأصول تعتمد على مُقيّم ثابت، لذا قد لا تتم إعادة توطين الأصول التي يتم تحميلها ديناميكياً ولا يمكن تحليلها ثابتاً بشكل صحيح. تتطلب بعض الحزم خيارات إضافية للتوافق الكامل، وهي مدرجة في وثائق دعم الحزم الموجودة في المستودع.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.