Versionamento e gestione delle dipendenze
Tenga traccia delle versioni dei plugin e ne verifichi la compatibilità al caricamento.
Versionamento e gestione delle dipendenze è una lezione Lua Academy gratuita su CoddyKit. Questa è la lezione 4 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Lua Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Lua Academy include 4 lezioni in totale.
Perché il versionamento è importante
I plugin evolvono. Un plugin v2.0 potrebbe essere incompatibile con le API v1.0. Il monitoraggio delle versioni previene errori di compatibilità silenziosi.
Versionamento semantico
Utilizzi il versionamento semantico: MAJOR.MINOR.PATCH. Le modifiche incompatibili incrementano MAJOR, le nuove funzionalità incrementano MINOR e le correzioni di bug incrementano PATCH.
Manifest del plugin con versione
Ogni plugin dichiara la propria versione e la versione richiesta dell'API dell'applicazione.
return {
name = "auth",
version = "2.1.0",
apiRequired = ">=1.0.0",
deps = { {name="logger", version=">=1.0.0"} },
init = function(app) -- ... end
}Analisi delle versioni
Analizzi una stringa di versione dividendola in componenti confrontabili.
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
endVerifica della compatibilità
Durante il caricamento del plugin, verifichi che la versione dell'API dell'applicazione soddisfi il requisito del plugin.
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
endRisoluzione del grafo delle dipendenze
Costruisca un grafo delle dipendenze ed esegua un ordinamento topologico per determinare l'ordine di caricamento.
Rilevamento delle dipendenze circolari
Tracci i plugin il cui caricamento è in corso. Se un plugin dipende da uno che è già in fase di caricamento (creando un ciclo), generi un errore.
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
endPercorsi di aggiornamento
Documenti le guide alla migrazione per gli incrementi della versione MAJOR. Valuti la possibilità di fornire uno shim di compatibilità per le vecchie API dei plugin durante un periodo di transizione.
Registro dei plugin con versioni
Un registro centrale memorizza tutte le versioni dei plugin installate. Risolva i conflitti preferendo la versione compatibile più alta.
Pattern del lockfile
Come il package-lock.json di npm: registri le versioni esatte utilizzate in una distribuzione in produzione per garantire build riproducibili.
Negoziazione delle versioni a runtime
Consenta ai plugin di dichiarare più versioni compatibili dell'API. L'applicazione host negozia e sceglie la versione più alta supportata da entrambe le parti.
Domanda sul versionamento
Che cosa indica l'incremento della versione MAJOR nel versionamento semantico?
Riepilogo: versionamento e dipendenze
Includa version e apiRequired in ogni manifest del plugin. Analizzi e confronti le versioni al momento del caricamento. Rilevi le dipendenze circolari. Utilizzi l'ordinamento topologico per stabilire l'ordine di caricamento. Mantenga un lockfile per distribuzioni in produzione riproducibili.
Domande Frequenti
La lezione «Versionamento e gestione delle dipendenze» è gratuita?
Sì — il testo completo di «Versionamento e gestione delle dipendenze» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Lua Academy, passa a CoddyKit PRO. Il corso Lua Academy include 4 lezioni in totale.
Cosa imparerò in «Versionamento e gestione delle dipendenze»?
Tenga traccia delle versioni dei plugin e ne verifichi la compatibilità al caricamento. Eserciti Lua Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare Lua Academy?
Non è richiesta alcuna esperienza precedente. Lua Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 4 di 4.
Quanto tempo richiede la lezione «Versionamento e gestione delle dipendenze»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione Lua Academy?
Sì. Ogni lezione Lua Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- Individuazione e caricamento dei plugin
- API dei plugin e sistema degli hook
- Sandbox per l'esecuzione dei plugin
- Versionamento e gestione delle dipendenze