إدارة الإصدارات والتبعيات
تتبّع إصدارات الإضافات وتحقّق من التوافق وقت التحميل
إدارة الإصدارات والتبعيات درس مجاني في Lua Academy على CoddyKit. هذا هو الدرس 4 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Lua Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Lua Academy 4 دروس في المجموع.
لماذا تُعد الإصدارات مهمة؟
تتطور الإضافات. قد تكون إضافة بالإصدار 2.0 غير متوافقة مع واجهات برمجة التطبيقات في الإصدار 1.0. ويمنع تتبّع الإصدارات إخفاقات التوافق الصامتة.
الإصدار الدلالي
استخدم الإصدار الدلالي: MAJOR.MINOR.PATCH. زِد MAJOR عند إجراء تغييرات غير متوافقة، وMINOR عند إضافة ميزات جديدة، وPATCH عند إصلاح الأخطاء.
بيان الإضافة مع الإصدار
تعلن كل إضافة عن إصدارها الخاص وإصدار واجهة برمجة تطبيقات التطبيق المطلوب.
return {
name = "auth",
version = "2.1.0",
apiRequired = ">=1.0.0",
deps = { {name="logger", version=">=1.0.0"} },
init = function(app) -- ... end
}تحليل الإصدار
حلّل سلسلة الإصدار إلى مكونات قابلة للمقارنة.
local function parseVersion(v)
local major, minor, patch = v:match("(%d+)%.(%d+)%.(%d+)")
return {tonumber(major), tonumber(minor), tonumber(patch)}
end
local function versionGe(a, b)
a, b = parseVersion(a), parseVersion(b)
for i = 1, 3 do
if a[i] ~= b[i] then return a[i] > b[i] end
end
return true
endالتحقق من التوافق
عند تحميل الإضافة، تحقّق من أن إصدار واجهة برمجة تطبيقات التطبيق يفي بالمتطلب المحدد للإضافة.
local APP_VERSION = "1.5.0"
local function checkCompatibility(plugin)
local req = plugin.apiRequired or ">=0.0.0"
local minVer = req:match(">=(.+)")
if minVer and not versionGe(APP_VERSION, minVer) then
error(("Plugin %s requires app >= %s, got %s"):format(
plugin.name, minVer, APP_VERSION))
end
endحل رسم التبعيات
أنشئ رسمًا للتبعيات ونفّذ ترتيبًا طوبولوجيًا لتحديد ترتيب التحميل.
اكتشاف التبعيات الدائرية
تتبّع الإضافات التي ما زالت قيد التحميل. إذا اعتمدت إضافة على إضافة يجري تحميلها بالفعل، أي عند وجود دورة، فأطلق خطأ.
local loading = {}
local function loadWithCycleCheck(name, plugins)
if loading[name] then error("Circular dependency: " .. name) end
loading[name] = true
-- load deps then load plugin
loading[name] = nil
endمسارات الترقية
وثّق أدلة الترحيل عند زيادة إصدار MAJOR. وفكّر في توفير طبقة توافق لواجهات برمجة التطبيقات القديمة للإضافات خلال فترة انتقالية.
سجل الإضافات مع الإصدارات
يخزّن سجل مركزي جميع إصدارات الإضافات المثبّتة. عالج التعارضات بتفضيل أعلى إصدار متوافق.
نمط ملف القفل
على غرار package-lock.json في npm، سجّل الإصدارات الدقيقة المستخدمة في عملية نشر إنتاجية لضمان عمليات بناء قابلة لإعادة الإنتاج.
التفاوض على الإصدار أثناء التشغيل
اسمح للإضافات بالإعلان عن عدة إصدارات متوافقة من واجهة برمجة التطبيقات. ويتفاوض التطبيق المضيف ويختار أعلى إصدار مدعوم من الطرفين.
سؤال حول الإصدارات
ماذا تعني زيادة إصدار MAJOR في الإصدار الدلالي؟
مراجعة: الإصدارات والتبعيات
ضمّن version وapiRequired في بيان كل إضافة. حلّل الإصدارات وقارن بينها عند وقت التحميل. اكتشف التبعيات الدائرية. استخدم الترتيب الطوبولوجي لتحديد ترتيب التحميل. واحتفظ بملف قفل لعمليات النشر الإنتاجية القابلة لإعادة الإنتاج.
الأسئلة الشائعة
هل درس «إدارة الإصدارات والتبعيات» مجاني؟
نعم — نص درس «إدارة الإصدارات والتبعيات» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Lua Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Lua Academy 4 دروس في المجموع.
ماذا ستتعلم في «إدارة الإصدارات والتبعيات»؟
تتبّع إصدارات الإضافات وتحقّق من التوافق وقت التحميل تتمرن على Lua Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Lua Academy؟
لا تُشترط خبرة سابقة. Lua Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 4 من أصل 4.
كم من الوقت يستغرق درس «إدارة الإصدارات والتبعيات»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Lua Academy هذا؟
نعم. كل درس في Lua Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- اكتشاف الإضافات وتحميلها
- واجهة API للإضافات ونظام الخطافات
- وضع تنفيذ الإضافات في بيئة معزولة
- إدارة الإصدارات والتبعيات