من التطوير المحلي إلى الإنتاج: نشر تطبيقات TypeScript في 2024

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة

كود TypeScript الخاص بك جاهز لاقتحام العالم؟ حان وقت إرساله إلى الإنتاج

\n\n

لقد كتبت تطبيق TypeScript المثالي. كل شيء يعمل بسلاسة محليًا، والأنواع صارمة، والكود جميل. ولكن بمجرد طرح السؤال "كيف يمكن تشغيل هذا على الخادم؟"، يقع العديد من المطورين في حيرة. هل هذا مألوف؟

\n\n

نشر تطبيقات TypeScript ليس علم الصواريخ، ولكنه أيضًا ليس مجرد "نسخ مجلد". في هذه المقالة، سنناقش ثلاثة أساليب رئيسية: VPS الكلاسيكي، وDocker الحديث، والمنصات السحابية. ستتعلم كيفية بناء مشروع TypeScript بشكل صحيح، وإعداد البيئة، وأتمتة نشر التحديثات. هيا بنا!

\n\n

الخطوة 1: تحضير تطبيق TypeScript للنشر

\n\n

قبل التفكير في الخوادم، يجب التأكد من أن تطبيقك جاهز للعمل خارج البيئة المحلية. TypeScript هي إضافة تُترجم (تجمّع) إلى JavaScript. على الخادم، لا يفهم Node.js ملفات .ts مباشرة (إلا إذا كنت تستخدم ts-node، وهو غير موصى به للإنتاج).

\n\n

بناء المشروع

\n\n

تأكد من أن ملف package.json الخاص بك يحتوي على الأوامر النصية الصحيحة:

\n\n
{\n  "scripts": {\n    "build": "tsc",\n    "start": "node dist/index.js",\n    "dev": "ts-node-dev --respawn src/index.ts"\n  },\n  "main": "dist/index.js"\n}
\n\n

الأمر npm run build سينشئ مجلد dist بكود JS الجاهز. هذا هو المجلد الذي سنقوم بنشره.

\n\n

نصيحة: أضف "outDir": "./dist" في ملف tsconfig.json وقم بإعداد exclude لـ node_modules:

\n\n
{\n  "compilerOptions": {\n    "outDir": "./dist",\n    "rootDir": "./src",\n    "target": "ES2020",\n    "module": "commonjs",\n    "strict": true,\n    "esModuleInterop": true\n  },\n  "include": ["src/**/*"],\n  "exclude": ["node_modules", "dist"]\n}
\n\n

الطريقة 1: VPS الكلاسيكي — تحكم كامل

\n\n

VPS (الخادم الخاص الافتراضي) هو خادم مستأجر، حيث أنت الملك والمتحكم. مناسب للمشاريع التي تحتاج تحكمًا كاملاً في البيئة. سننظر في النشر على Ubuntu 22.04.

\n\n

إعداد الخادم

\n\n
    \n
  • الاتصال عبر SSH: ssh root@عنوان_IP_الخاص_بك
  • \n
  • تحديث الحزم: apt update && apt upgrade -y
  • \n
  • تثبيت Node.js 20.x: \n curl -fsSL https://deb.nodesource.com/setup_20.x | bash - && apt install -y nodejs\n
  • \n
  • تثبيت PM2 — مدير عمليات Node.js:\n npm install -g pm2\n
  • \n
\n\n

نشر التطبيق

\n\n

أسهل طريقة هي نسخ الملفات عبر SCP أو Git. أوصي باستخدام Git:

\n\n
git clone https://github.com/مستودعك/المشروع.git /var/www/myapp\ncd /var/www/myapp\nnpm install\nnpm run build\npm2 start dist/index.js --name "myapp"\npm2 save\npm2 startup
\n\n

هام: قم بإعداد Nginx كوكيل عكسي (reverse proxy) ليكون التطبيق متاحًا على المنفذ 80:

\n\n
server {\n    listen 80;\n    server_name نطاقك.ru;\n\n    location / {\n        proxy_pass http://localhost:3000;\n        proxy_http_version 1.1;\n        proxy_set_header Upgrade $http_upgrade;\n        proxy_set_header Connection 'upgrade';\n        proxy_set_header Host $host;\n        proxy_cache_bypass $http_upgrade;\n    }\n}
\n\n

لا تنسَ إعداد SSL عبر Certbot — فهو مجاني وإلزامي للويب الحديث.

\n\n

الطريقة 2: Docker — الحاويات لإمكانية التكرار

\n\n

يحل Docker المشكلة الرئيسية لـ VPS: "إنه يعمل على جهازي!". تحتوي الحاوية على كل ما هو ضروري — Node.js، والتبعيات، والكود المُجمّع. البيئة متطابقة على أي نظام تشغيل.

\n\n

Dockerfile لـ TypeScript

\n\n

نقوم بإنشاء بناء متعدد المراحل (multi-stage build) — وهذا يقلل من حجم الصورة النهائية:

\n\n
# المرحلة 1: بناء TypeScript\nFROM node:20-alpine AS builder\nWORKDIR /app\nCOPY package*.json ./\nRUN npm ci\nCOPY . .\nRUN npm run build\n\n# المرحلة 2: صورة الإنتاج                

المدونات

توصيات الكتب