01 / 15
SESSION 16 · Part 4 개발 환경

패키지 매니저

개발자의 앱스토어 — npm · pnpm · pip

02 / 15
🎯

이 세션에서
배우는 것

📦
패키지란?
라이브러리·의존성의 개념을 설명할 수 있다
⌨️
기본 명령어
npm · pnpm · pip의 install 명령을 사용할 수 있다
📄
package.json
프로젝트 설정 파일의 역할을 이해한다
03 / 15
💭

패키지
써야 할까?

지도 기능이 필요하다고 해서 처음부터 지도를 만들 필요는 없다.
이미 누군가 만들어 공개한 코드 묶음을 가져다 쓰면 된다.

이 묶음이 바로 패키지(라이브러리).
패키지 매니저는 이걸 설치·업데이트·제거해주는 도구다.

04 / 15

주요 패키지 매니저

언어별로 표준이 되는 도구가 있다.

📦
npm
Node.js 기본 · 가장 대중적
pnpm
빠르고 디스크 절약
🧶
Yarn
Meta 제작 · 모노레포
🥟
Bun
초고속 · 올인원 런타임
🐍
pip
Python 표준
🐍
uv / poetry
Python 차세대
💎
gem
Ruby
📚
cargo
Rust
05 / 15
📦

npm install —
더 깊게 이해하기

명령어 하나를 입력하면 뒤에서는 이런 일이 순서대로 일어난다.

1
package.json 읽기
어떤 패키지가 필요한지, 각각 어떤 버전이 요구되는지 목록을 확인한다.
2
의존성 트리 분석
A 패키지가 B를 필요로 하고, B가 C를 필요로 하는 중첩 의존성을 모두 계산한다.
3
npm 레지스트리에서 다운로드
npmjs.com에서 필요한 패키지들을 버전에 맞게 다운로드한다.
4
node_modules 폴더에 저장
모든 패키지가 node_modules 폴더에 저장된다. 수백 개가 쌓여 수백 MB가 되기도 한다.
06 / 15
📦

대표 3종 — npm · pnpm · pip

📦
npm
JavaScript 표준. npm install react 로 바로 설치. Node.js에 기본 내장.
pnpm
npm과 호환되지만 훨씬 빠르고 디스크 공간을 절약. 본 프로젝트의 기본 선택.
🐍
pip
Python 패키지 관리자. pip install pandas 로 데이터 분석 라이브러리 설치.
07 / 15
⚠️

버전 충돌 —
실제로는 어떻게?

패키지 A가 lodash 4를 요구하고, 패키지 B가 lodash 3을 요구하면 충돌이 일어난다.

📄 A requires
lodash@4
📄 B requires
lodash@3
💥 버전 충돌
발생
🔧 lock 파일로
해결

핵심: package-lock.json(npm) 또는 pnpm-lock.yaml이 정확한 버전을 고정해 어디서든 같은 환경을 보장한다

08 / 15

핵심 파일 — package.json

프로젝트의 신분증 같은 파일이다.

1
어떤 패키지가 필요한지 목록
dependencies 항목에 내 프로젝트가 의존하는 패키지들이 버전과 함께 적힌다.
2
자주 쓰는 명령어 저장
scriptsdev, build 같은 짧은 이름을 등록해 실행.
3
node_modules 폴더
설치된 실제 패키지 파일들이 저장되는 곳. 수 GB가 되기도 해서 Git에 올리지 않는다.
4
재생성 가능
다른 PC에서도 pnpm install 한 번이면 동일한 환경 복원.
09 / 15
📱

실생활에서
이렇게 쓰여요

우리가 매일 사용하는 앱과 서비스 속에 이 개념이 녹아 있다.

⚛️
React 설치(npm)
npx create-react-app my-app 명령 하나로 React 개발 환경이 모두 셋업된다
🐍
Python 라이브러리(pip)
pip install pandas numpy matplotlib 로 데이터 분석에 필요한 모든 도구가 설치된다
🍺
맥 앱(Homebrew)
brew install node 처럼 맥에서 개발 도구를 설치하는 패키지 매니저. 개발자의 필수품

💡 이 개념이 없다면 필요한 라이브러리를 매번 직접 찾아 다운로드해야 한다

10 / 15
💡

자주 하는
오해 바로잡기

이렇게 생각하기 쉽지만, 실제로는 조금 다릅니다.

❌ 흔한 오해
  • 패키지=앱이다
  • npm=Node.js이다
  • package.json을 직접 편집하면 안 된다
✓ 실제로는
  • 패키지는 코드 라이브러리다. 실행되는 앱이 아니라 다른 코드에서 불러다 쓰는 모듈이다
  • npm은 Node.js에 포함된 패키지 관리자다. Node.js는 런타임, npm은 도구다
  • package.json은 텍스트 파일로 직접 편집 가능하다. 단, 형식(JSON)을 지켜야 한다
11 / 15
🛒

패키지 매니저는 앱스토어

이미 잘 알고 있는 개념으로 이해할 수 있다.

📱 앱스토어 비유
앱스토어
=
npm 레지스트리 — 패키지들이 올라와 있는 창고
앱 설치
=
pnpm add react — 필요한 패키지를 내 프로젝트에
설치된 앱 목록
=
package.json — 어떤 앱을 썼는지 메모
앱 실제 파일
=
node_modules — 용량 큰 실물, 언제든 재설치 가능
12 / 15
🤖

이걸 알면
AI와 이렇게 대화해요

이 개념을 이해하면 Claude나 ChatGPT를 훨씬 잘 활용할 수 있다.

👤
npm install 할 때 에러가 났어요.
🤖
에러 메시지를 알려주시면 원인을 찾는 데 도움이 됩니다.
👤
npm ERR! peer dep missing: react@^17.0.0, required by @testing-library/react@12.0.0 이 에러 해결 방법 알려줘.
🤖
react 17을 요구하는데 다른 버전이 설치된 것 같아요. npm install react@17 --save로 버전을 맞추거나, --legacy-peer-deps 옵션으로 경고를 무시하고 설치할 수 있어요.
13 / 15

이렇게
이해하셨나요?

맞게 이해하셨어요
package.json은 프로젝트의 의존성 목록이며, 이 파일 하나로 어디서든 같은 환경을 재현할 수 있다
이렇게는 아니에요
npm install 하면 항상 최신 버전이 설치된다 — package.json에 명시된 버전 범위 안에서 설치된다
맞게 이해하셨어요
node_modules는 Git에 올리지 않고, pnpm install로 언제든 재생성할 수 있다
이렇게는 아니에요
패키지=앱이다 — 패키지는 다른 코드에서 불러다 쓰는 라이브러리 모듈이다

💪 패키지 매니저를 이해하면 오픈소스 생태계 전체를 내 프로젝트에 활용할 수 있습니다!

14 / 15
📌

핵심 정리

📦
패키지
재사용 가능한
코드 묶음
🛒
패키지 매니저
설치·업데이트·제거
자동화 도구
📄
package.json
의존성 목록 +
스크립트 정의
📁
node_modules
실제 설치 파일 —
Git에 올리지 않음
pnpm
빠르고 효율적 —
본 과정의 기본
🔗
의존성
내 프로젝트가
필요로 하는 것들
15 / 15
🚀

다음 세션
Session 17 · 디버깅 기초

코드를 쓰다 보면 반드시 에러를 만난다.
에러 메시지를 읽고 원인을 찾는 법 — 디버깅의 세계로 들어간다.

💡 기억할 것: 직접 만들지 말고 설치하라. 이미 누군가 만들었다.

슬라이드 목록