0Pricing
Lua Academy · Lezione

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
end

Verifica 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
end

Risoluzione 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
end

Percorsi 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

  1. Individuazione e caricamento dei plugin
  2. API dei plugin e sistema degli hook
  3. Sandbox per l'esecuzione dei plugin
  4. Versionamento e gestione delle dipendenze
← Torna a Lua Academy