의존성 (Dependency)
이 페이지는 바이브 코딩 문맥에서 자주 쓰이는 의존성 (Dependency)의 뜻과 쓰임을 중급 난이도 기준으로 정리한 AI 용어사전 항목입니다. 정의와 맥락, 관련 용어 5개 순서로 묶었으니, 아래 설명을 먼저 읽고 연결된 개념과 글까지 이어서 보면 이해가 빨라집니다.
의존성(Dependency)은 소프트웨어를 실행·빌드·개발하는 데 필요한 다른 구성요소와 그에 기대는 관계입니다. 프로그램이 호출하는 라이브러리뿐 아니라 테스트나 코드 변환에 쓰는 도구도 작업 단계에 따라 의존성이 됩니다. 프로젝트가 직접 선택한 구성요소와 그 구성요소가 다시 필요로 하는 항목을 함께 살펴야 실제로 설치되고 사용되는 범위를 파악할 수 있습니다.
직접 사용하는 항목과 연결된 항목
프로그램이 날짜를 처리하는 라이브러리를 호출한다면 그 라이브러리는 해당 프로그램의 의존성입니다. 필요한 기능을 모두 직접 작성하는 대신 다른 구성요소가 제공하는 기능을 사용하므로, 그 구성요소가 없거나 맞지 않는 버전이면 실행에 문제가 생길 수 있습니다. 의존성은 파일 목록만을 뜻하지 않습니다. 어느 부분이 다른 부분의 기능이나 동작 조건에 기대고 있는지도 함께 나타냅니다.
프로젝트가 직접 선택해 선언한 항목은 직접 의존성입니다. 선택한 라이브러리가 내부에서 또 다른 패키지를 요구하면 그 항목은 프로젝트의 입장에서 전이 의존성이 됩니다. 처음 추가한 패키지가 하나여도 설치되는 패키지 수는 더 많을 수 있습니다. 문제를 조사할 때 처음 고른 이름만 확인하면 내부에서 연결된 항목을 놓칠 수 있으므로, 어떤 경로로 필요한 패키지가 되었는지를 함께 살펴봅니다.
npm의 package-lock.json 문서는 설치된 의존성 트리의 정보를 기록하는 방식을 설명합니다. 트리라는 표현은 패키지가 다른 패키지를 필요로 하는 연결을 나타냅니다. 이 기록에는 전이 의존성과 각 패키지가 요구하는 항목도 들어갑니다. 상위 패키지를 갱신한 뒤 직접 수정하지 않은 다른 패키지까지 달라졌다면, 이 연결 관계와 실제 선택된 버전을 함께 확인할 수 있습니다.
실행과 개발 단계에 따른 구분
npm의 의존성 선언 안내는 package.json의 dependencies와 devDependencies를 구분합니다. dependencies는 애플리케이션의 운영에 필요한 패키지이고, devDependencies는 로컬 개발과 테스트에만 필요한 패키지라고 설명합니다. 이름이 비슷해도 필요한 단계가 다릅니다. 패키지를 어느 항목에 넣을지는 프로젝트에서 어떤 역할로 쓰는지에 따라 판단합니다.
테스트 실행 도구는 테스트를 돌릴 때 필요하고, 실행 중인 애플리케이션이 직접 호출하는 라이브러리는 그 애플리케이션의 동작에 필요합니다. 코드 변환이나 빌드에 쓰는 도구라면 빌드가 어느 환경에서 실행되는지도 함께 봅니다. 개발 의존성으로 분류했다고 배포를 준비하는 모든 단계에서 빼도 되는 것은 아닙니다. 완성된 결과물을 실행하는 단계와 그 결과물을 만드는 단계를 나누면 필요한 항목을 구분하기 쉽습니다.
직접·전이 의존성의 구별과 실행·개발 의존성의 구별은 서로 다른 기준입니다. 앞의 구별은 프로젝트에 연결된 경로를, 뒤의 구별은 필요한 용도를 말합니다. 테스트 도구가 다시 요구하는 패키지도 있고, 실행용 라이브러리가 내부에서 요구하는 패키지도 있습니다. npm의 잠금 파일 문서도 개발 의존성에만 속한 항목과 여러 경로로 사용되는 항목을 구분하므로, 직접 선언하지 않았다는 이유만으로 개발용이라고 판단하지 않습니다.
버전 범위와 잠금 파일의 역할
package.json에는 사용할 패키지와 버전 조건을 적습니다. npm의 선언 안내는 각 패키지에 적힌 의미적 버전 조건에 맞는 항목을 설치한다고 설명합니다. 이 조건은 한 버전을 지정할 수도 있고 여러 버전을 허용하는 범위일 수도 있습니다. 허용 범위를 적은 선언과 실제로 선택된 버전은 같은 정보가 아니므로, 문제가 발생한 환경을 비교할 때는 선언 파일만 보고 설치 상태가 같다고 단정하지 않습니다.
package-lock.json은 실제로 구성된 의존성 트리를 기록해 이후 설치에서 같은 트리를 재현하도록 돕습니다. npm 문서는 이 파일을 소스 저장소에 함께 커밋해 팀원과 배포 환경이 같은 의존성 정보를 사용하게 하는 용도로 설명합니다. 잠금 파일에는 패키지의 버전과 가져온 위치 같은 정보가 포함됩니다. 변경을 검토할 때는 직접 의존성의 선언뿐 아니라 잠금 파일에서 달라진 연결과 버전도 확인할 수 있습니다.
잠금 파일이 같다는 사실이 운영체제나 실행 환경까지 같게 만들지는 않습니다. 같은 문서는 패키지의 운영체제·CPU 제약과 설치 스크립트 여부 같은 조건도 기록한다고 설명합니다. 또한 특정 버전을 다시 설치할 수 있다는 사실만으로 그 버전에 결함이 없거나 애플리케이션이 정상 동작한다고 확인한 것은 아닙니다. 의존성을 바꾼 뒤에는 필요한 패키지가 설치되었는지와 변경된 구성에서 빌드·테스트·실행이 작동하는지를 각각 확인합니다.
관련 용어
의존성 (Dependency)와 함께 자주 언급되는 개념들입니다. 비슷한 말처럼 보여도 역할과 쓰임은 다를 수 있습니다.
