كيف نختار أداة التثبيت
نختار من كودك، وأول تطابق هو المعتمد:
- الحقل
packageManagerفيpackage.json، مثل[email protected]. - ملف قفل بهذا الترتيب:
pnpm-lock.yaml، ثمbun.lockأوbun.lockb، ثمyarn.lock. - الملف
.yarnrc.yml، أي Yarn 2 أو أحدث. engines.pnpmأوengines.bunأوengines.yarnفيpackage.json.- وإلا فـ npm، مع
package-lock.jsonأوnpm-shrinkwrap.jsonإذا وُجد.
وهذا أمر التثبيت لكل أداة، مع ملف القفل ثم دونه:
- npm:
npm ci، أوnpm install. - pnpm:
corepack pnpm install --frozen-lockfile، أوcorepack pnpm install. - Yarn 1:
corepack yarn install --frozen-lockfile، أوcorepack yarn install. - Yarn 2 أو أحدث:
corepack yarn install --immutable، أوcorepack yarn install --no-immutable. - Bun:
bun install --frozen-lockfile، أوbun install.
يشغّل Corepack أداتي pnpm و Yarn بالإصدار المكتوب في packageManager. وارفع ملف القفل دائمًا، فبدونه قد يثبّت النشر إصدارات مكتبات لم تجربها.
ولا نعيد التثبيت إلا عند تغيّر أمر التثبيت أو إصدار Node أو package.json أو ملف القفل، وإلا يظهر في الكونسول dependencies are up to date (npm).
البناء
إذا كان في package.json سكربت build، نشغّله بعد التثبيت بالأداة نفسها، مثل npm run build، في كل نشر، ولا نعيده عند الريستارت العادي. يظهر في الكونسول building: npm run build ثم build finished، وإذا فشل البناء يتوقف النشر في مرحلة build. ولأمر بناء مختلف، اكتبه في الحقل build في serverk.json.
TypeScript
- مع البناء:
"build": "tsc"و"start": "node dist/index.js". ويبقىtypescriptفيdevDependenciesكما هو، لأننا نثبّتها أيضًا. ولا تضفNODE_ENV=productionإلى المتغيرات، فمعه يتجاوز npm مكتباتdevDependenciesولا يجد البناءtsc. - دون بناء: إذا كان
index.tsفي أعلى الكود ولم نجد ملف تشغيل قبله، نشغّله بـnode index.ts، فيحذف Node الأنواع ويشغّل الملف. وإذا احتاج كودك إلى البناء قبل التشغيل، فأضف سكربتbuild. - مع
tsxفي مكتباتك، يشتغل أمرstartمثلtsx src/index.ts، لأنnode_modules/.binفي المسار.
كيف نشغّل بوتك
أول تطابق هو المعتمد:
- أمر التشغيل في إعدادات بوتك.
- الحقل
startفيserverk.json. - سطر
worker:أوbot:فيProcfile. - سكربت
startفيpackage.json. - الملف المذكور في
mainفيpackage.json، بـnode. index.jsثمsrc/index.jsثمbot.jsثمsrc/bot.jsثمindex.ts، بـnode.
نشغّل أمر سكربت start مباشرة، لا عبر npm start، فلا يشتغل سكربت prestart. ضع خطوته في build بدلًا منه.
إصدار Node
يشتغل بوتك على Node 24، وهو الإصدار الموجود في بيئة التشغيل. نقرأ engines.node و .nvmrc و .node-version و .tool-versions، وإذا طلبت إصدارًا آخر ننبّهك في «شغّل بوتك»، ونطبع في الكونسول سطرًا مثل the code asks for Node 18, this runtime is Node 24، ثم نشغّل بوتك على Node 24.
Bun وما في بيئة التشغيل
Bun موجود في بيئة التشغيل أيضًا: مع bun.lock نثبّت بـ bun install --frozen-lockfile، وأمر start مثل bun run src/index.ts يشغّل بوتك بـ Bun. وفيها كذلك python3 و make و g++ للمكتبات التي تُبنى عند التثبيت، و ffmpeg للصوت.
هل ساعدك هذا الشرح؟
ساهم في تحسين هذا الشرح
الشروحات مفتوحة المصدر، فإذا كان لديك تصحيح أو إضافة، افتح Pull Request على github.com/serverkgg/bot-node