Versionado y gestión de dependencias
Realice un seguimiento de las versiones de los plugins y compruebe la compatibilidad durante la carga.
Versionado y gestión de dependencias es una lección gratuita de Lua Academy en CoddyKit. Esta es la lección 4 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Lua Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Lua Academy incluye 4 lecciones en total.
Por qué es importante el versionado
Los plugins evolucionan. Un plugin v2.0 puede ser incompatible con las API de v1.0. El seguimiento de versiones evita fallos de compatibilidad silenciosos.
Versionado semántico
Utilice el versionado semántico: MAJOR.MINOR.PATCH. Los cambios incompatibles incrementan MAJOR, las funciones nuevas incrementan MINOR y las correcciones de errores incrementan PATCH.
Manifiesto del plugin con versión
Cada plugin declara su propia versión y la versión requerida de la API de la aplicación.
return {
name = "auth",
version = "2.1.0",
apiRequired = ">=1.0.0",
deps = { {name="logger", version=">=1.0.0"} },
init = function(app) -- ... end
}Análisis de versiones
Analice una cadena de versión para convertirla en componentes comparables.
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
endComprobación de compatibilidad
Al cargar un plugin, verifique que la versión de la API de la aplicación cumpla el 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
endResolución del grafo de dependencias
Construya un grafo de dependencias y realice una ordenación topológica para determinar el orden de carga.
Detección de dependencias circulares
Registre qué plugins se están cargando. Si un plugin depende de otro que ya se está cargando (como parte de un ciclo), genere un error.
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
endRutas de actualización
Documente guías de migración para los incrementos de versión MAJOR. Considere proporcionar una capa de compatibilidad para las API antiguas de los plugins durante el periodo de transición.
Registro de plugins con versiones
Un registro central almacena todas las versiones de plugins instaladas. Resuelva los conflictos dando preferencia a la versión compatible más alta.
Patrón de archivo de bloqueo
Al igual que package-lock.json de npm: registre las versiones exactas utilizadas en un despliegue de producción para garantizar compilaciones reproducibles.
Negociación de versiones en tiempo de ejecución
Permita que los plugins declaren varias versiones compatibles de la API. La aplicación host negocia y elige la versión más alta compatible con ambas partes.
Pregunta sobre el versionado
¿Qué indica un incremento de versión MAJOR en el versionado semántico?
Repaso: versionado y dependencias
Incluya la versión y apiRequired en cada manifiesto de plugin. Analice y compare las versiones al cargar los plugins. Detecte las dependencias circulares. Utilice una ordenación topológica para determinar el orden de carga. Mantenga un archivo de bloqueo para realizar despliegues de producción reproducibles.
Aprende Lua con un tutor de IA — gratis
Escribe y ejecuta código real en tu navegador, obtén ayuda instantánea de un tutor de IA disponible 24/7 y continúa donde lo dejaste en la web o en la aplicación.
- Cursos
- 40
- Lecciones
- 159
Preguntas frecuentes
¿La lección «Versionado y gestión de dependencias» es gratis?
Sí — el texto completo de «Versionado y gestión de dependencias» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Lua Academy, actualiza a CoddyKit PRO. El curso de Lua Academy incluye 4 lecciones en total.
¿Qué aprenderé en «Versionado y gestión de dependencias»?
Realice un seguimiento de las versiones de los plugins y compruebe la compatibilidad durante la carga. Practicas Lua Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar Lua Academy?
No se requiere experiencia previa. Lua Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 4 de 4.
¿Cuánto tiempo toma la lección «Versionado y gestión de dependencias»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de Lua Academy?
Sí. Cada lección de Lua Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- Detección y carga de plugins
- API de plugins y sistema de hooks
- Ejecución de plugins en sandbox
- Versionado y gestión de dependencias