의존성(dependency)은 내 프로그램이 제대로 돌아가려고 빌려다 쓰는 남의 코드(부품)를 말합니다.
2026년 7월 기준으로, AI에게 코딩을 시키다 보면 "이 패키지에 의존한다"는 표현을 자주 만나게 됩니다.
이 글을 읽으면 의존성이 정확히 무슨 뜻인지, 왜 그게 줄줄이 이어지는지, 그리고 왜 신경 써야 하는지를 비유 하나로 잡을 수 있습니다.

의존성은 내 코드가 기대고 있는 남의 코드입니다. 그 부품이 또 다른 부품에 기대고, 그게 줄줄이 이어져 사슬(의존성 트리)이 됩니다. 부품 하나에 문제가 생기면 내 앱까지 흔들릴 수 있어서, AI가 추천한 것이라도 결국 한 번은 확인이 필요합니다.
의존한다는 건 말 그대로 "기댄다"는 뜻입니다.
내가 만든 코드가 혼자서는 못 하는 일을, 남이 미리 만들어 둔 코드에 기대서 해결하는 것입니다.
예를 들어 날짜를 예쁘게 다루는 기능이 필요하면, 그걸 처음부터 다 만들지 않고 이미 잘 만들어진 부품을 가져다 씁니다.
이때 가져다 쓴 그 부품이 바로 내 프로젝트의 의존성입니다.
여기서 부품은 앞서 다룬 npm 같은 곳에서 내려받는 라이브러리를 말합니다.
즉 의존성은 "내 앱이 돌아가려면 옆에 반드시 있어야 하는 남의 코드"라고 보면 됩니다.
재미있는 건, 내가 가져온 부품도 혼자서 완성품이 아니라는 점입니다.
그 부품 역시 또 다른 부품에 기대고 있습니다.
내 코드가 A에 기대고, A는 B에 기대고, B는 다시 C에 기대는 식입니다.
이렇게 기댐이 줄줄이 이어진 사슬 구조를 의존성 트리(dependency tree)라고 부릅니다.
블록 탑을 떠올리면 쉽습니다. 위층 블록 하나를 올리려고 아래층 블록 여러 개가 받쳐주는 모양입니다.
node_modules 폴더가 그렇게 무거운 이유도 여기에 있습니다. 부품 하나를 설치하면 그 부품이 기대는 부품까지 전부 딸려 들어오기 때문입니다.

기대는 게 편하긴 하지만, 그만큼 남의 상태에 영향을 받습니다.
받치고 있던 아래층 블록 하나가 흔들리면 그 위에 얹힌 것들이 같이 흔들리는 것과 같습니다.
실제로 신경 써야 할 지점은 크게 두 가지입니다.
| 구분 | 뜻 | 신경 쓸 점 |
|---|---|---|
| 직접 의존성 | 내가 직접 가져다 쓴 부품 | 버전이 바뀌면 내 코드가 안 돌 수 있음 |
| 간접 의존성 | 내 부품이 기대는 또 다른 부품 | 직접 부르지 않았는데도 보안 문제에 노출될 수 있음 |
첫째는 버전입니다. 부품이 새 버전으로 바뀌면서 사용법이 달라지면, 잘 돌던 내 앱이 갑자기 멈추기도 합니다.
둘째는 보안입니다. 내가 직접 고르지도 않은 간접 의존성에 허점이 있으면, 그 허점이 곧 내 앱의 허점이 됩니다.
개인적으로는 이 부분이 초보자가 가장 놓치기 쉬운 지점이라고 봅니다. 눈에 보이는 부품만 신경 쓰고, 그 아래 딸려온 것들은 있는 줄도 모르기 때문입니다.
AI에게 코드를 맡기면 "이 기능은 어떤 패키지에 의존한다"는 식의 설명을 자주 듣게 됩니다.
이건 "이 코드가 돌아가려면 이런 남의 부품이 필요하다"는 뜻입니다.
문제는 AI가 부품을 골라줬다고 해서 그게 무조건 안전하거나 최신이라는 보장은 없다는 점입니다.
AI가 추천한 부품도 결국은 남이 만든 코드이고, 그 부품이 무엇에 기대는지까지는 한눈에 보이지 않습니다.
그래서 AI가 새 패키지를 설치하라고 하면, 이름이 정확한지와 잘 관리되고 있는 부품인지 한 번쯤 확인하는 습관이 필요합니다.
이 이야기는 "남의 코드를 어디까지 믿을 것인가"라는 공급망 문제와도 자연스럽게 이어집니다.
많다고 무조건 나쁜 건 아닙니다.
잘 만들어진 부품을 쓰면 내가 짤 코드가 줄어 오히려 편합니다.
다만 부품이 많아질수록 관리하고 확인할 대상도 함께 늘어난다는 점만 기억하면 됩니다.
직접 의존성은 내가 직접 설치해서 package.json에 이름이 적힌 부품입니다.
간접 의존성은 그 부품이 다시 데려온, 내가 이름을 적은 적 없는 부품입니다.
둘 다 node_modules 폴더 안에는 함께 들어와 있습니다.
의존성은 내 코드가 기대고 있는 남의 코드입니다.
그 기댐이 부품에서 부품으로 줄줄이 이어져 사슬(의존성 트리)을 이룹니다.
편리한 만큼 버전과 보안이라는 짐도 함께 따라오니, AI가 골라준 부품이라도 한 번은 확인하는 게 안전합니다.
패키지와 부품 개념은 npm 공식 문서 설명을 기준으로 정리했으며, 우리말 용어 풀이는 초보용 개념 해설을 참고했습니다. 특정 부품의 이름·관리 상태 확인은 발행 전 공식 문서 확인이 필요합니다.

| JSX가 뭐야 — 자바스크립트 안에 HTML을 넣는 문법 (0) | 2026.07.21 |
|---|---|
| 자바스크립트(js) vs 타입스크립트(ts) — 뭐가 다르고 왜 쓸까 (0) | 2026.07.21 |
| node_modules가 뭐야 — 왜 이렇게 무겁고, 지워도 되나 (0) | 2026.07.21 |
| package.json이 뭐야 — 프로젝트의 신분증이자 재료 목록 (0) | 2026.07.21 |
| Node.js가 뭐야 — 브라우저 밖에서도 도는 자바스크립트 (0) | 2026.07.21 |
댓글 영역