0Pricing
Lua Academy · 강의

버전 관리와 의존성 관리

플러그인 버전을 추적하고 로드 시 호환성을 확인합니다.

버전 관리와 의존성 관리은(는) CoddyKit의 무료 Lua Academy 강의입니다. 이것은 4개 중 4번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Lua Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Lua Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

버전 관리가 중요한 이유

플러그인은 발전합니다. 플러그인 v2.0은 v1.0 API와 호환되지 않을 수 있습니다. 버전을 추적하면 감지되지 않는 호환성 문제를 방지할 수 있습니다.

시맨틱 버전 관리

시맨틱 버전 관리를 사용합니다: MAJOR.MINOR.PATCH. 호환성을 깨는 변경에는 MAJOR를 증가시키고, 새 기능에는 MINOR를 증가시키며, 버그 수정에는 PATCH를 증가시킵니다.

버전이 포함된 플러그인 매니페스트

각 플러그인은 자체 버전과 필요한 앱 API 버전을 선언합니다.

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

버전 분석

버전 문자열을 비교 가능한 구성 요소로 분석합니다.

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

호환성 검사

플러그인을 로드할 때 앱의 API 버전이 플러그인의 요구 사항을 충족하는지 확인합니다.

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

의존성 그래프 해결

의존성 그래프를 만들고 위상 정렬을 수행하여 로드 순서를 결정합니다.

순환 의존성 탐지

현재 로드 중인 플러그인을 추적합니다. 플러그인이 이미 로드 중인 플러그인에 의존하면(순환이 발생하면) 오류를 발생시킵니다.

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

업그레이드 경로

MAJOR 버전이 올라갈 때의 마이그레이션 안내서를 문서화합니다. 전환 기간 동안 이전 플러그인 API를 위한 호환성 계층을 제공하는 방안을 고려합니다.

버전이 포함된 플러그인 레지스트리

중앙 레지스트리에 설치된 모든 플러그인 버전을 저장합니다. 호환되는 버전 중 가장 높은 버전을 우선하여 충돌을 해결합니다.

잠금 파일 패턴

npm의 package-lock.json과 같이 프로덕션 배포에 사용한 정확한 버전을 기록하여 재현 가능한 빌드를 보장합니다.

런타임 버전 협상

플러그인이 호환 가능한 여러 API 버전을 선언하도록 합니다. 호스트 앱은 서로 지원되는 버전을 협상하여 가장 높은 버전을 선택합니다.

버전 관리 질문

시맨틱 버전 관리에서 MAJOR 버전 증가는 무엇을 나타내나요?

복습: 버전 관리와 의존성

모든 플러그인 매니페스트에 버전과 apiRequired를 포함합니다. 로드 시점에 버전을 분석하고 비교합니다. 순환 의존성을 탐지합니다. 로드 순서에는 위상 정렬을 사용합니다. 재현 가능한 프로덕션 배포를 위해 잠금 파일을 유지합니다.

자주 묻는 질문

“버전 관리와 의존성 관리” 강의는 무료인가요?

네 — “버전 관리와 의존성 관리” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Lua Academy 강의 전체를 잠금 해제할 수 있습니다. Lua Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

“버전 관리와 의존성 관리”에서 뭘 배우나요?

플러그인 버전을 추적하고 로드 시 호환성을 확인합니다. 브라우저에서 직접 실행하는 실습 코드로 Lua Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

Lua Academy을(를) 시작하는 데 경험이 필요한가요?

사전 경험은 필요하지 않습니다. CoddyKit의 Lua Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 4번째 강의입니다.

“버전 관리와 의존성 관리” 강의는 얼마나 걸리나요?

대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.

이 Lua Academy 강의에서 코드를 작성하고 실행할 수 있나요?

네. 모든 Lua Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. 플러그인 검색과 로딩
  2. 플러그인 API와 훅 시스템
  3. 플러그인 실행 샌드박스화
  4. 버전 관리와 의존성 관리
← Lua Academy(으)로 돌아가기