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
endSprawdzanie 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
endRozwią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
- Wyszukiwanie i ładowanie pluginów
- API pluginów i system hooków
- Sandboxowanie wykonywania pluginów
- Wersjonowanie i zarządzanie zależnościami