0Pricing
Lua Academy · Lekcja

Wersjonowanie i zarządzanie zależnościami

Proszę śledzić wersje pluginów i sprawdzać zgodność podczas ładowania.

Wersjonowanie i zarządzanie zależnościami to bezpłatna lekcja Lua Academy na CoddyKit. To lekcja 4 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Lua Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Lua Academy zawiera 4 lekcji w sumie.

Dlaczego wersjonowanie ma znaczenie

Wtyczki ewoluują. Wtyczka w wersji 2.0 może być niezgodna z interfejsami API w wersji 1.0. Śledzenie wersji zapobiega cichym awariom zgodności.

Wersjonowanie semantyczne

Należy stosować wersjonowanie semantyczne: MAJOR.MINOR.PATCH. Zmiany niezgodne wstecz zwiększają MAJOR, nowe funkcje zwiększają MINOR, a poprawki błędów zwiększają PATCH.

Manifest wtyczki z wersją

Każda wtyczka deklaruje własną wersję oraz wymaganą wersję API aplikacji.

return {
  name        = "auth",
  version     = "2.1.0",
  apiRequired = ">=1.0.0",
  deps        = { {name="logger", version=">=1.0.0"} },
  init        = function(app) -- ... end
}

Analizowanie wersji

Należy przeanalizować tekstową wersję na elementy, które można ze sobą porównywać.

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

Sprawdzanie zgodności

Podczas ładowania wtyczki należy sprawdzić, czy wersja API aplikacji spełnia wymagania wtyczki.

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

Rozwiązywanie grafu zależności

Należy utworzyć graf zależności i wykonać sortowanie topologiczne, aby ustalić kolejność ładowania.

Wykrywanie cyklicznych zależności

Należy śledzić wtyczki, które są w trakcie ładowania. Jeśli wtyczka zależy od innej, która jest już ładowana (w ramach cyklu), należy zgłosić błąd.

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

Ścieżki aktualizacji

Należy dokumentować przewodniki migracji dla głównych zmian wersji MAJOR. W okresie przejściowym warto udostępnić warstwę zgodności dla starszych interfejsów API wtyczek.

Rejestr wtyczek z wersjami

Centralny rejestr przechowuje wszystkie zainstalowane wersje wtyczek. Konflikty należy rozwiązywać, wybierając najwyższą zgodną wersję.

Wzorzec pliku blokad

Podobnie jak npm package-lock.json: należy zapisać dokładne wersje używane we wdrożeniu produkcyjnym, aby zapewnić powtarzalność kompilacji.

Negocjowanie wersji w czasie wykonywania

Należy umożliwić wtyczkom deklarowanie wielu zgodnych wersji API. Aplikacja hosta negocjuje wersję i wybiera najwyższą wersję obsługiwaną przez obie strony.

Pytanie o wersjonowanie

Co oznacza zwiększenie wersji MAJOR w wersjonowaniu semantycznym?

Podsumowanie: wersjonowanie i zależności

W każdym manifeście wtyczki należy uwzględnić version i apiRequired. Wersje należy analizować i porównywać podczas ładowania. Należy wykrywać cykliczne zależności. Do ustalania kolejności ładowania należy używać sortowania topologicznego. Dla powtarzalnych wdrożeń produkcyjnych należy przechowywać plik blokad.

Często zadawane pytania

Czy lekcja „Wersjonowanie i zarządzanie zależnościami” jest bezpłatna?

Tak — pełny tekst „Wersjonowanie i zarządzanie zależnościami” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Lua Academy, przejdź na CoddyKit PRO. Kurs Lua Academy zawiera 4 lekcji w sumie.

Co nauczysz się w „Wersjonowanie i zarządzanie zależnościami”?

Proszę śledzić wersje pluginów i sprawdzać zgodność podczas ładowania. Ćwiczysz Lua Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć Lua Academy?

Nie wymagamy żadnego doświadczenia. Lua Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 4 z 4.

Ile czasu zajmuje lekcja „Wersjonowanie i zarządzanie zależnościami”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji Lua Academy?

Tak. Każda lekcja Lua Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Wyszukiwanie i ładowanie pluginów
  2. API pluginów i system hooków
  3. Sandboxowanie wykonywania pluginów
  4. Wersjonowanie i zarządzanie zależnościami
← Powrót do Lua Academy