منصوبے کے بارے میں

ncc ورسل کے زیرِ انتظام ایک کمانڈ لائن ٹول ہے جو Node.js پروگرام کو اس کے تمام انحصارات سمیت ایک آؤٹ پٹ فائل میں بندل کرتا ہے، بالکل gcc طرز کی کمپائلیشن کی روح سے۔ اس کا ڈیزائن مقصد زیرو کنفیگریشن ہے: اسے صرف ایک انٹری فائل کی طرف اشارہ کریں اور یہ ایک مختصر بلڈ تیار کر دیتا ہے، اور جب tsconfig.json موجود ہو تو TypeScript کو مقامی طور پر ہینڈل کرتا ہے۔ بنیادی کمانڈز ہیں `build` (بندل شدہ فائل کو آؤٹ پٹ ڈائریکٹری میں نکالتا ہے، بطور ڈیفالٹ `dist/index.js`)، `run` (عارضی ڈائریکٹری میں بلڈ کرتا ہے اور ٹیسٹنگ و ڈی بگنگ کے لیے مکمل سورس میپ سپورٹ کے ساتھ چلاتا ہے)، اور `cache` (بلڈ کیشے کو صاف، معائنہ، یا سائز کرتا ہے)۔ اختیارات عام بندلنگ ضروریات کا احاطہ کرتے ہیں: `--minify`، `--source-map`، مخصوص ماڈیولز کو بندل کرنے سے چھوڑنے کے لیے `--external`، اضافی دوبارہ بلڈز کے لیے `--watch`، ECMAScript آؤٹ پٹ لیول سیٹ کرنے کے لیے `--target`، V8 کمپائل کیش نکالنے کے لیے `--v8-cache`، لائسنس معلومات منسلک کرنے کے لیے `--license`، webpack اسٹیٹس کو JSON کے طور پر ڈمپ کرنے کے لیے `--stats-out`، اور ورکر اسکرپٹس جیسے تودے شدہ JS اثاثوں کو بار بار بندل کرنے کے لیے `--asset-builds`۔ ماڈیول فارمیٹ ان پٹ سے اخذ کیا جاتا ہے، لہٰذا `.mjs` ان پٹس یا `"type": "module"` پیکیج حد کے اندر فائلیں ES ماڈیول آؤٹ پٹ پیدا کرتی ہیں، جبکہ `.cjs` ان پٹس CommonJS ایکسٹینشن کو برقرار رکھتی ہیں۔ CLI کے علاوہ، ncc Node.js سے پروگرامیٹک API بھی ظاہر کرتا ہے۔ ان پٹ پاتھ اور آپشنز آبجیکٹ کے ساتھ `require('@vercel/ncc')` کال کرنا ایک پرامس لوٹاتا ہے جو `{ code, map, assets }` پر حل ہوتا ہے، جہاں assets فائل ناموں کا ان کے سورس، اجازتوں، اور symlink میٹا ڈیٹا سے نقشہ ہے۔ اختیارات CLI فلیگز کی عکاسی کرتے ہیں، بشمول حسب ضرورت کیشے پاتھس، externals، منیفکیشن، سورس میپس، واچ موڈ، لائسنس جنریشن، اور ٹارگٹ انتخاب۔ واچ موڈ میں لوٹائی گئی آبجیکٹ پرامس کے بجائے `handler`، `rebuild`، اور `close` کال بیکس ظاہر کرتی ہے۔ پروجیکٹ کے بیان کردہ محرکات ہیں کم از کم npm پیکیجز شائع کرنا، سرور لیس ماحول میں صرف متعلقہ کوڈ بھیجنا، بندلر کنفیگریشن کی زحمت سے بچنا، اور بوٹ ٹائم اور I/O کو بہتر بنانا۔ یہ ان پٹ اور آؤٹ پٹ دونوں کے طور پر Node.js پروگرامز کو ہدف بناتا ہے اور تمام Node.js پیٹرنز اور npm ماڈیولز کی سپورٹ کا ارادہ رکھتا ہے۔ ایک دستاویزی خبردار یہ ہے کہ فائل اور اثاثوں کی منتقلی ایک جامد جائزہ کار پر انحصار کرتی ہے، لہٰذا متحرک طور پر لوڈ کیے گئے اثاثے جن کا جامد تجزیہ ممکن نہیں ہو، درست طریقے سے منتقل نہیں ہو سکتے۔ کچھ پیکیجز کو مکمل مطابقت کے لیے اضافی اختیارات درکار ہوتے ہیں، جو ریپوزٹری کی پیکیج سپورٹ دستاویزات میں درج ہیں۔