오늘 방문 /누적 방문 /완성한 레슨 소개 ↗
SECONDTEAM
웹·배포
🌐 레슨

Node와 npm — Claude가 쓰는 부엌도구

Claude가 npm install을 칠 때 무슨 일이 일어나나. 직접 쓸 일은 적어도 알아보면 든든해요.

① 오늘의 미스터리
"이게 다 뭐지…?"
어제 가게 사이트를 만들어달라고 했더니, Claude가 터미널에서 알 수 없는 영어를 주르륵 쏟아냈어요. added 42 packages, node_modules 같은 말들이요. 에러는 아닌 것 같은데, 뭔가 무서운 느낌.

사실 이건 Claude가 가게를 짓기 위해 부엌도구를 챙기는 소리였어요. 오늘은 그 두 도구 — Node와 npm의 정체를 밝혀봅니다. 알고 나면 로그가 더는 안 무섭습니다.

설명을 따라 진행하면, 여기서 직접 쳐보게 돼요 👇
~/my-shop
$ _
📚 「Node와 npm — Claude가 쓰는 부엌도구」 레슨 내용 전체 텍스트로 훑어보기
"이게 다 뭐지…?"
어제 가게 사이트를 만들어달라고 했더니, Claude가 터미널에서 알 수 없는 영어를 주르륵 쏟아냈어요. added 42 packages, node_modules 같은 말들이요. 에러는 아닌 것 같은데, 뭔가 무서운 느낌.

사실 이건 Claude가 가게를 짓기 위해 부엌도구를 챙기는 소리였어요. 오늘은 그 두 도구 — Node와 npm의 정체를 밝혀봅니다. 알고 나면 로그가 더는 안 무섭습니다.

우리 가게 사이트의 동작은 JavaScript로 만들어요. 그런데 JavaScript는 원래 어디서 실행되던 언어일까요?
맞아요. JavaScript는 원래 브라우저 안에서만 돌던 언어였어요. 버튼 누르면 반응하고, 화면 바꾸고 — 그게 전부였죠. 그런데 Node가 등장하면서, 브라우저 밖 내 컴퓨터에서도 JavaScript를 돌릴 수 있게 됐어요.

Node(노드)는 한 줄로 말하면 "브라우저 밖에서 JavaScript를 돌리는 엔진"이에요.

비유로 잡기
브라우저는 JavaScript를 돌리는 완성된 자동차였어요. Node는 그 자동차에서 엔진만 꺼내 내 컴퓨터 어디서든 시동 걸 수 있게 만든 거예요.
그래서 화면 없이도 — 우리 반찬가게의 서버를 돌리거나, 파일을 만들거나, 도구를 실행할 수 있어요.

지난 레슨에서 localhost로 내 PC를 서버로 만들었죠? 그 서버를 실제로 굴린 엔진이 바로 Node였어요.

Node를 깔면 npm(엔피엠)이라는 짝꿍 도구가 따라와요. npm은 요리 재료(패키지) 가게예요.

왜 재료 가게가 필요할까
반찬가게 사이트에 '날짜 예쁘게 보여주기', '로그인' 같은 기능이 필요할 때, 그걸 처음부터 직접 다 만들 필요가 없어요. 세상 누군가가 이미 만들어 둔 조각(패키지)을 npm에서 가져다 쓰면 돼요.

반찬을 만들 때 간장·고춧가루를 직접 담그지 않고 마트에서 사 오듯, 코드 재료도 npm 가게에서 사 옵니다. 그 '사 오는' 명령이 npm install이에요.

Node가 내 컴퓨터에 들어와 있는지 직접 확인해봐요. 가게 폴더에서 node -v를 쳐보세요. (-v는 version, 버전을 묻는 말)

node -v — Node 엔진이 있는지, 몇 버전인지 확인해요
npm -v — 짝꿍 npm도 있는지 확인해요
이렇게 숫자가 나오면 두 부엌도구가 이미 들어와 있다는 뜻이에요. (숫자는 컴퓨터마다 달라요.) 에러가 나면 아직 안 깔린 거고, 그땐 Claude에게 "Node 까는 법 알려줘" 하면 돼요.

처음에 봤던 그 무서운 로그 — Claude가 npm install을 칠 때 일어난 일이에요. 딱 세 가지가 벌어져요.

npm install = 장 보기 3단계
1. 다운로드 — npm 가게에서 필요한 재료(패키지)를 내려받아요
2. 쌓기 — 받은 재료를 node_modules라는 창고 폴더에 차곡차곡 쌓아요
3. 기록 — "이 재료를 샀다"고 재료 목록에 적어둬요

그래서 added 42 packages는 "재료 42개를 창고에 넣었어요"라는 장보기 영수증이었던 거예요. 무서운 게 아니라 반가운 소리!

Claude가 npm install을 돌리고 난 뒤, 가게 폴더 안에 새로 생기는 덩치 큰 폴더의 이름은 무엇일까요?

node_modules 폴더예요. 받아 온 재료가 전부 여기에 쌓여요. 재료끼리도 또 다른 재료를 필요로 해서, 이 폴더는 금세 엄청 커져요. 그래서 보통 git에는 올리지 않고(.gitignore로 빼두고), 필요하면 npm install언제든 다시 만들어 써요.

장보기 3단계의 마지막 — '기록'이 적히는 곳이 바로 package.json이에요. 우리 가게 프로젝트의 재료 목록표죠.

목록표에 적히는 것
· 이 프로젝트 이름은 뭔지
· 어떤 재료(패키지)를 어떤 버전으로 쓰는지
· 자주 쓰는 명령(예: 서버 켜기)을 짧은 이름으로 묶어둔 것

핵심은 node_modules(창고)는 통째로 옮기지 않아도, package.json(목록표) 하나만 있으면 npm install 한 번으로 똑같은 창고를 다시 채울 수 있다는 점이에요. 목록표가 곧 재현의 비결이에요.

우리 가게 프로젝트가 어떤 재료를 쓰는지 궁금하면, Claude에게 그냥 물어보면 돼요. 직접 파일을 열어 헤맬 필요가 없어요.

우리 가게 package.json에 어떤 재료가 적혀 있어? 각각 뭐 하는 건지 한 줄로 설명해줘 — 지금 가게가 쓰는 재료를 말로 물어봐요
이렇게 "우리 프로젝트가 뭘 쓰는지"도 Claude에게 물어보면 돼요. 직접 install을 칠 일은 드물어도, 읽고 알아보는 힘이 생기면 로그가 안 무서워집니다.

다른 컴퓨터에서 우리 가게 코드를 받아왔는데, node_modules 창고가 비어 있어요. 목록표(package.json)를 보고 재료를 다시 채우려면 어떤 명령을 칠까요?

정답! npm install이에요. (줄여서 npm i 라고도 써요.) 목록표만 있으면 이 한 줄로 창고가 똑같이 다시 채워져요. 그래서 무거운 node_modules를 들고 다닐 필요가 없죠.
헷갈리기 쉬운 두 가지를 나란히 정리해요. 무엇을 챙기고 무엇을 버려도 되는지.
📋 package.json (재료 목록표): 짧고 가벼운 목록. 무슨 재료를 쓰는지 사람이 읽고 관리해요. git으로 챙겨서 같이 옮겨요.
📦 node_modules (재료 창고): 실제 재료가 잔뜩 쌓인 덩치 큰 창고. 목록표만 있으면 npm install언제든 다시 생겨요. 그래서 보통 git에서 빼둬요.
한 줄로
Node는 브라우저 밖에서 JavaScript를 돌리는 엔진, npm은 코드 재료를 사 오는 가게예요. npm install은 재료를 받아 node_modules 창고에 쌓고 package.json 목록표에 적는 장보기. 직접 칠 일은 드물어도 — 이제 그 로그가 "장 보는 소리"로 읽히죠.
다음 레슨에서
그런데 이렇게 Node가 돌리는 '뒤의 것'과, 우리 눈에 보이는 가게 화면은 사실 다른 식구예요. 다음 레슨 "프론트와 백 — 보이는 것과 뒤의 것"에서 이 둘의 관계를 풉니다. 가게는 계속 자랍니다. 🌱