0Pricing
TypeScript Academy · درس

نشر الحزم مع الأنواع

انشر المكتبات مع كتابات متكاملة: أنشئ .d.ts باستخدام tsc، وأشر إليها من package.json، وتعامَل مع صادرات ESM/CJS، واختبر قبل النشر.

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

مقدمة

الهدف: نشر حزمة ذات تعريفات نوعية قوية. ستُخرج ملفات .d.ts، وتضبط package.json بشكل صحيح، وتدعم ESM/CJS عبر exports، وتتحقق باستخدام tsc --noEmit في تطبيق نموذجي.

  • إخراج التعريفات
  • تحديد types (أو exports لكل إدخال)
  • الاختبار قبل النشر

إخراج التعريفات

فعّل declaration لإخراج .d.ts. استخدم إعداد بناء مخصصًا للحفاظ على صرامة tsconfig الخاص بالتطبيق ونظافته.

// tsconfig.build.json
{
  "compilerOptions": {
    "target": "ES2020",
    "module": "ESNext",
    "declaration": true,
    "emitDeclarationOnly": false,
    "outDir": "dist",
    "rootDir": "src",
    "stripInternal": true
  },
  "include": ["src/**/*"]
}

أنواع/صادرات package.json

وجّه types إلى التعريف الجذري. وبالنسبة إلى صادرات المسارات الفرعية، أضف إدخال types حتى تتمكن المحررات من حل ملف .d.ts الخاص بكل وحدة.

// package.json
{
  "name": "@acme/widgets",
  "version": "1.0.0",
  "type": "module",
  "main": "./dist/index.cjs",
  "module": "./dist/index.js",
  "types": "./dist/index.d.ts",
  "exports": {
    ".": {
      "types": "./dist/index.d.ts",
      "import": "./dist/index.js",
      "require": "./dist/index.cjs"
    },
    "./utils": {
      "types": "./dist/utils.d.ts",
      "import": "./dist/utils.js",
      "require": "./dist/utils.cjs"
    }
  }
}

المصدر مقابل .d.ts

تأكد من أن واجهة API العامة محددة الأنواع جيدًا. تعكس التعريفات توقيعات المصدر، ليحصل المستهلكون على الإكمال التلقائي والفحص.

// src/index.ts
export interface Widget { id: string; name: string }
export function greet(w: Widget): string { return `Hello, ${w.name}` }

// dist/index.d.ts (emitted)
export interface Widget { id: string; name: string }
export declare function greet(w: Widget): string

الاختبار في مشروع مستهلك

قبل النشر، اختبر في مشروع مستهلك صغير باستخدام tsc --noEmit. وتوقع ظهور أخطاء صحيحة عند الاستخدام غير الصالح.

// consumer/tsconfig.json
{
  "compilerOptions": { "strict": true, "target": "ES2020", "module": "ESNext" },
  "include": ["./src"]
}

// consumer/src/app.ts
import { greet } from "@acme/widgets"

// Type checks in the consumer
console.log(greet({ id: "w1", name: "Ada" }))
// @ts-expect-error: missing name
// console.log(greet({ id: "w1" }))

نصائح ومزالق

نصائح:

  • فضّل exports للمسارات الفرعية مع types لكل إدخال.
  • أبقِ الأنواع الداخلية غير مُصدّرة أو علّمها بـ @internal.
  • استخدم نصًا برمجيًا prepare للبناء قبل npm publish.

التحقق من نشر الأنواع

تحقق سريع: ما الحد الأدنى من الإعداد الصحيح لإتاحة الأنواع؟

خلاصة

خلاصة: أخرج التعريفات باستخدام tsc، واضبط package.json (types/exports)، وتحقق منها في تطبيق مستهلك قبل النشر.

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

هل درس «نشر الحزم مع الأنواع» مجاني؟

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

ماذا ستتعلم في «نشر الحزم مع الأنواع»؟

انشر المكتبات مع كتابات متكاملة: أنشئ .d.ts باستخدام tsc، وأشر إليها من package.json، وتعامَل مع صادرات ESM/CJS، واختبر قبل النشر. تتمرن على TypeScript Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

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

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

كم من الوقت يستغرق درس «نشر الحزم مع الأنواع»؟

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

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

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

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

  1. .d.ts الأساسية؛ export type مقابل export
  2. نشر الحزم مع الأنواع
← العودة إلى TypeScript Academy