상세 컨텐츠

본문 제목

node_modules가 뭐야 — 왜 이렇게 무겁고, 지워도 되나

서버·개발/코드 노트

by 사이 (SAI) 2026. 7. 21. 06:40

본문

728x90
반응형

node_modules는 npm으로 설치한 코드 부품이 전부 쌓이는 창고 폴더이고, package.json만 있으면 언제든 다시 만들 수 있어서 지워도 됩니다. 2026년 7월 기준으로, AI가 짜준 코드를 처음 돌려보다 이 폴더를 열면 파일 수천 개에 용량은 수백 MB라 당황하기 쉽습니다. 이 글을 읽고 나면 이게 왜 이렇게 무거운지, 그리고 왜 마음 놓고 지워도 되는지가 정리됩니다.

천장까지 상자가 가득 쌓인 거대한 물류 창고, 입구에 node_modules 한글 팻말

node_modules는 설치한 코드 부품이 실제로 쌓이는 창고입니다. 무거운 건 부품이 또 다른 부품에 줄줄이 기대고 있어서고, package.json과 잠금 파일만 있으면 통째로 다시 만들 수 있어서 지워도 됩니다.

node_modules가 대체 뭔가

먼저 npm부터 짧게 짚고 갑니다.

npm은 코드 부품을 받아오는 앱스토어 같은 곳이고, 터미널에 npm install이라고 치면 필요한 부품이 내 컴퓨터로 내려옵니다.

그 부품들이 실제로 쌓이는 자리가 바로 node_modules 폴더입니다.

비유하자면 npm install은 "장바구니 담고 주문"이고, node_modules는 주문한 물건이 도착해 쌓이는 창고입니다.

그래서 프로젝트 폴더를 열면 보통 package.json이라는 주문서와 node_modules라는 창고가 나란히 놓여 있습니다.

주문서에는 "이 프로젝트는 이런 부품이 필요하다"는 목록만 적혀 있고, 실물은 전부 창고 쪽에 들어갑니다.

왜 이렇게 무거운가

node_modules가 무거운 이유는 부품이 혼자 오지 않기 때문입니다.

부품 하나를 설치하면 그 부품이 돌아가려고 또 다른 부품을 데려오고, 그 부품이 다시 다른 부품을 데려옵니다.

이렇게 "기대고 또 기대는" 관계를 의존성이라고 부르는데, 이건 다음 편에서 따로 다룹니다.

부품 몇 개만 적었는데 창고에 물건이 수천 개 쌓이는 게 바로 이 때문입니다.

상자 하나를 열면 그 안에 더 작은 상자들이 줄줄이 들어 있는 러시아 인형식 구조

개발자들 사이에서는 node_modules를 두고 "우주에서 제일 무거운 폴더"라는 농담이 돌 정도입니다.

물론 진짜 그렇다는 건 아니고, 그만큼 용량이 잘 불어난다는 걸 웃으며 인정하는 표현입니다.

지워도 되나

결론부터 말하면 지워도 됩니다.

node_modules는 언제든 다시 만들 수 있는 폴더거든요.

프로젝트에 package.json과 잠금 파일(package-lock.json 같은 파일)만 남아 있으면, 터미널에 npm install을 한 번 더 치는 것만으로 창고가 통째로 다시 채워집니다.

주문서가 남아 있으니 창고는 얼마든지 다시 배송받으면 되는 셈입니다.

개인적으로는 뭔가 설치가 꼬여서 에러가 날 때, node_modules를 지우고 다시 설치하는 게 가장 빠른 해결책인 경우가 많다고 봅니다.

용량이 부담될 때 지워도 프로젝트 자체는 망가지지 않는다, 이 점만 기억하면 됩니다.

헷갈리지 않게 '지워도 되는 것'과 '지우면 안 되는 것'을 나눠보면 이렇습니다.

지워도 되는 것 지우면 안 되는 것
node_modules 폴더 (다시 만들 수 있음) package.json (부품 목록)
설치가 꼬였을 때 통째로 삭제 후 재설치 잠금 파일 (package-lock.json 등)

그래서 깃허브에는 안 올린다

다시 만들 수 있는 성질 때문에, node_modules는 보통 깃허브에 올리지 않습니다.

어차피 받는 사람이 npm install 한 번이면 똑같이 채우는데, 굳이 수백 MB를 통째로 올릴 이유가 없습니다.

그래서 "이건 올리지 마"라고 지정하는 .gitignore라는 파일에 node_modules가 거의 항상 들어갑니다.

이 .gitignore도 초보가 자주 만나는 파일이라 다음 편에서 따로 정리합니다.

AI로 코딩할 때랑 무슨 상관인가

AI로 만든 프로젝트를 다른 사람에게 넘기거나 옮길 때 이 이야기가 바로 쓸모가 있습니다.

폴더를 통째로 압축해서 보내려는데 용량이 수백 MB라면, 십중팔구 node_modules 때문입니다.

이때 node_modules만 빼고 package.json은 남긴 채로 보내면, 받는 쪽에서 npm install 한 번으로 똑같은 환경을 만듭니다.

압축 용량은 확 줄고, 공유는 훨씬 가벼워집니다.

AI가 코드를 짜주는 시대라도 이 폴더의 정체를 알아두면, 프로젝트를 복사하고 공유하는 일이 한결 수월해집니다.

파일 탐색기 창에 node_modules 폴더가 선택돼 수백 MB 용량이 표시된 화면 목업

정리하면

node_modules는 npm으로 받은 코드 부품이 쌓이는 창고입니다.

부품이 서로 줄줄이 기대는 탓에 용량이 크게 불어나고, package.json과 잠금 파일만 있으면 언제든 다시 채울 수 있습니다.

그래서 지워도 되고, 깃허브에도 올리지 않으며, 프로젝트를 공유할 때는 빼고 보내는 게 정석입니다.

자주 묻는 질문

node_modules를 지웠는데 프로젝트가 안 돌아가요

대부분 다시 설치를 안 해서 그렇습니다.

프로젝트 폴더에서 터미널을 열고 npm install을 한 번 실행하면 창고가 다시 채워지면서 정상으로 돌아옵니다.

단, package.json 파일까지 같이 지웠다면 주문서가 사라진 셈이라 복구가 까다로워지니, 그 파일은 건드리지 않는 게 좋습니다.

node_modules랑 package.json 중에 뭐가 더 중요한가요

package.json이 훨씬 중요합니다.

node_modules는 언제든 다시 만드는 창고지만, package.json은 그 창고를 다시 채우는 주문서라서 이게 없으면 무엇을 얼마나 받아와야 하는지 알 수 없습니다.

그래서 백업하거나 공유할 때 반드시 챙겨야 하는 쪽은 package.json입니다.

 

 

참고한 자료

npm 공식 문서(docs.npmjs.com)와 MDN 웹 문서를 참고했습니다. 명령어와 파일 이름은 발행 전 공식 문서 확인이 필요합니다.

728x90
반응형

관련글 더보기

댓글 영역