0Pricing
TypeScript Academy · درس

البنيات التزايدية والتخزين المؤقت في المستودعات متعددة الحزم

حسّنوا أوقات البناء باستخدام التجميع التزايدي وTurborepo

البنيات التزايدية والتخزين المؤقت في المستودعات متعددة الحزم درس مجاني في TypeScript Academy على CoddyKit. هذا هو الدرس 4 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في TypeScript Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة TypeScript Academy 4 دروس في المجموع.

لماذا تهم عمليات البناء التدريجية؟

في المستودعات الكبيرة متعددة الحزم، تكون إعادة بناء كل حزمة عند كل تغيير بطيئة. تكتشف عمليات البناء التدريجية ما تغير وتعيد ترجمة الحزم المتأثرة فقط.

# Without incremental: all 20 packages rebuild every time
# With incremental: only 2 changed packages rebuild

الوضع التدريجي في TypeScript

فعّل "incremental": true في tsconfig لإنشاء ملف .tsbuildinfo يخزن حالة البناء السابقة مؤقتًا لإجراء عمليات إعادة تشغيل سريعة.

{
  "compilerOptions": {
    "incremental": true,
    "tsBuildInfoFile": "./.tsbuildinfo"
  }
}

tsc --build لمراجع المشاريع

يعمل tsc --build تدريجيًا بطبيعته مع مساحات عمل مراجع المشاريع — إذ يتتبع الطوابع الزمنية ويتجاوز الحزم المحدّثة.

# First build: all packages compiled
tsc --build
# Second build: only changed packages compiled
tsc --build
# [12:00:01 PM] Project 'packages/core' is up to date

التخزين المؤقت في Turborepo

يخزن Turborepo مخرجات المهام مؤقتًا، مثل dist/، ويستعيدها من ذاكرة التخزين المؤقت عند عدم تغير المدخلات — عبر الفريق باستخدام التخزين المؤقت عن بُعد.

// turbo.json
{
  "pipeline": {
    "build": {
      "dependsOn": ["^build"],
      "outputs": ["dist/**", ".tsbuildinfo"]
    }
  }
}

التخزين المؤقت عن بُعد باستخدام Turborepo

شارك ذاكرة التخزين المؤقت للبناء بين أجهزة CI وأعضاء الفريق حتى لا يعيد أحد بناء ما بناه شخص آخر مسبقًا.

# Link to Vercel remote cache
npx turbo login
npx turbo link

ذاكرة التخزين المؤقت للحسابات في Nx

يوفر Nx تخزينًا مؤقتًا مشابهًا مع تحليل دقيق للحزم المتأثرة استنادًا إلى مخطط تبعيات المشروع.

# Nx: only test affected projects
npx nx affected --target=test --base=main

مدخلات ومخرجات ذاكرة التخزين المؤقت

لضمان صحة التخزين المؤقت، صرّح عن جميع المدخلات، مثل ملفات المصدر ومتغيرات البيئة، والمخرجات، مثل مجلدات dist وtsbuildinfo، في إعدادات أداة البناء.

// turbo.json with inputs
{
  "pipeline": {
    "build": {
      "inputs": ["src/**", "tsconfig.json"],
      "outputs": ["dist/**"]
    }
  }
}

إبطال ذاكرة التخزين المؤقت

يُبطَل التخزين المؤقت عند تغير المدخلات. تجنب تضمين الملفات المتغيرة باستمرار، مثل السجلات أو الطوابع الزمنية، كمدخلات لمنع عمليات إعادة البناء غير الضرورية.

# Force rebuild even if cached
turbo run build --force

التكامل مع CI

اربط CI، مثل GitHub Actions وCircleCI، بذاكرة التخزين المؤقت عن بُعد حتى تكون عمليات بناء طلبات السحب سريعة عبر إعادة استخدام مصنوعات البناء السابقة.

# .github/workflows/ci.yml
- name: Build
  run: npx turbo build
  env:
    TURBO_TOKEN: ${{ secrets.TURBO_TOKEN }}
    TURBO_TEAM: my-team

فحص الأنواع التدريجي فقط

استخدم tsc --noEmit --incremental لخطوات CI السريعة التي تفحص الأنواع فقط، فتتجاوز الإخراج مع الاستفادة من التخزين المؤقت.

npx tsc --noEmit --incremental
# Quick type check with .tsbuildinfo cache

مراجعة: عمليات البناء التدريجية

تستخدم عمليات البناء التدريجية في المستودعات متعددة الحزم tsBuildInfo الخاص بـ TypeScript مع tsc --build، بالإضافة إلى التخزين المؤقت في Turborepo أو Nx، لتقليل عمل الترجمة عند كل تغيير.

تحقق سريع

ما الملف الذي ينشئه TypeScript لتمكين عمليات البناء التدريجية؟

ما تعلمته

تستخدم عمليات البناء التدريجية ملف TypeScript‏ .tsbuildinfo وtsc --build لتجاوز الحزم التي لم تتغير. يوسع Turborepo وNx هذه الإمكانية بالتخزين المؤقت عن بُعد وتحليل الحزم المتأثرة فقط عبر المستودع متعدد الحزم بأكمله.

الأسئلة الشائعة

هل درس «البنيات التزايدية والتخزين المؤقت في المستودعات متعددة الحزم» مجاني؟

نعم — نص درس «البنيات التزايدية والتخزين المؤقت في المستودعات متعددة الحزم» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة TypeScript Academy، انتقل إلى CoddyKit PRO. تتضمن دورة TypeScript Academy 4 دروس في المجموع.

ماذا ستتعلم في «البنيات التزايدية والتخزين المؤقت في المستودعات متعددة الحزم»؟

حسّنوا أوقات البناء باستخدام التجميع التزايدي وTurborepo تتمرن على TypeScript Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ TypeScript Academy؟

لا تُشترط خبرة سابقة. TypeScript Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 4 من أصل 4.

كم من الوقت يستغرق درس «البنيات التزايدية والتخزين المؤقت في المستودعات متعددة الحزم»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس TypeScript Academy هذا؟

نعم. كل درس في TypeScript Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. شرح مراجع مشاريع TypeScript
  2. مساحات عمل pnpm مع TypeScript
  3. استراتيجية حزمة الأنواع المشتركة
  4. البنيات التزايدية والتخزين المؤقت في المستودعات متعددة الحزم
← العودة إلى TypeScript Academy