pgms

[17주차] - [9기] 타입스크립트로 함께하는 웹 풀 사이클 개발(React, Node.js) 10회차 - 77

Ejah 2026. 5. 7. 20:39

npm이란? 자바스크립트 개발의 필수 도구 완벽 정리

프론트엔드나 백엔드 개발을 공부하다 보면 가장 먼저 만나게 되는 도구 중 하나가 바로 npm입니다.
React, Next.js, NestJS, Express 같은 현대 자바스크립트 프로젝트를 시작하려고 하면 거의 항상 등장하죠.

처음에는 단순히 npm install 정도만 사용하게 되지만, 실제로는 프로젝트를 관리하고 협업하고 배포하는 데까지 매우 중요한 역할을 합니다.

이번 글에서는 npm이 무엇인지부터 시작해서 실제 개발에서 어떻게 사용하는지, 왜 중요한지, 그리고 자주 사용하는 명령어까지 한 번에 정리해보겠습니다.


npm이란?

npm은 Node Package Manager의 약자입니다.

쉽게 말하면:

자바스크립트 패키지(라이브러리)를 설치하고 관리하는 도구

입니다.

여기서 패키지(package)는 다른 개발자가 만들어 둔 기능 모음이라고 생각하면 됩니다.

예를 들어:

  • 웹 서버를 쉽게 만들고 싶다 → express
  • React 프로젝트를 만들고 싶다 → react
  • 날짜 계산을 쉽게 하고 싶다 → dayjs
  • 데이터베이스 ORM을 쓰고 싶다 → prisma

이런 기능들을 npm을 통해 설치해서 사용할 수 있습니다.


Node.js와 npm의 관계

npm은 별도로 설치하는 경우도 있지만, 대부분은 Node.js를 설치하면 함께 설치됩니다.

즉:

 
node -v
npm -v
 

이 두 명령어가 정상적으로 동작한다면 이미 사용할 준비가 끝난 것입니다.

Node.js는 자바스크립트를 브라우저 밖에서도 실행할 수 있게 해주는 런타임이고, npm은 그 환경에서 필요한 패키지를 관리하는 역할을 합니다.


왜 npm이 중요한가?

예전에는 필요한 기능을 직접 구현하는 경우가 많았습니다.

하지만 현대 개발은 다릅니다.

이미 검증된 오픈소스 라이브러리를 활용해 개발 속도를 높이는 방식이 일반적입니다.

예를 들어 로그인 기능, 데이터 검증, 날짜 처리, 실시간 통신 등을 모두 처음부터 구현하면 시간이 매우 오래 걸립니다.

하지만 npm을 사용하면:

 
npm install socket.io
 

단 한 줄로 실시간 통신 라이브러리를 프로젝트에 추가할 수 있습니다.

즉 npm은:

  • 개발 속도를 높여주고
  • 검증된 코드를 재사용할 수 있게 해주며
  • 협업을 쉽게 만들어주는

현대 웹 개발의 핵심 도구라고 볼 수 있습니다.


npm 초기화하기

새 프로젝트를 시작할 때는 보통 아래 명령어를 사용합니다.

 
npm init
 

빠르게 기본 설정으로 생성하고 싶다면:

 
npm init -y
 

를 사용합니다.

그러면 프로젝트 루트에 package.json 파일이 생성됩니다.


package.json이란?

package.json은 프로젝트의 정보를 담고 있는 핵심 파일입니다.

예시:

 
{
  "name": "my-project",
  "version": "1.0.0",
  "scripts": {
    "dev": "node index.js"
  }
}
 

여기에는:

  • 프로젝트 이름
  • 버전
  • 실행 스크립트
  • 설치된 패키지 정보

등이 저장됩니다.

실제 협업에서는 이 파일이 매우 중요합니다.

왜냐하면 다른 사람이 프로젝트를 받았을 때:

 
npm install
 

한 줄만 입력하면 동일한 개발 환경을 구성할 수 있기 때문입니다.


npm install

가장 많이 사용하는 명령어입니다.

 
npm install express
 

또는 축약해서:

 
npm i express
 

라고 작성합니다.

이 명령어를 실행하면:

  • node_modules
  • package-lock.json

파일이 생성됩니다.


node_modules란?

설치한 패키지들이 실제로 저장되는 폴더입니다.

프로젝트가 커질수록 용량이 매우 커질 수 있습니다.

그래서 GitHub에 올릴 때는 보통 .gitignore에 추가합니다.

 
node_modules
 

package-lock.json은 왜 필요할까?

패키지는 시간이 지나면서 업데이트됩니다.

그런데 협업 중에 서로 다른 버전이 설치되면 오류가 발생할 수 있습니다.

이를 방지하기 위해 npm은 정확한 버전 정보를 package-lock.json에 저장합니다.

덕분에:

  • 팀원
  • CI/CD 서버
  • 배포 환경

모두 동일한 패키지 버전을 설치할 수 있습니다.


dependencies와 devDependencies

npm 패키지는 크게 두 가지로 나뉩니다.

dependencies

실제 서비스 실행에 필요한 패키지입니다.

예:

 
npm install express
 

devDependencies

개발 환경에서만 필요한 패키지입니다.

예:

 
npm install -D typescript
 

대표적으로:

  • TypeScript
  • ESLint
  • Prettier
  • Jest

등이 여기에 포함됩니다.


npm scripts

package.json에는 자주 사용하는 명령어를 등록할 수 있습니다.

예시:

 
{
  "scripts": {
    "dev": "nodemon src/index.js",
    "start": "node dist/index.js"
  }
}
 

실행:

 
npm run dev
 

이 기능은 정말 자주 사용됩니다.

React 프로젝트에서도:

 
npm run dev
npm run build
npm run test
 

같은 명령어를 계속 사용하게 됩니다.


npm과 오픈소스

npm의 가장 큰 특징 중 하나는 엄청난 규모의 오픈소스 생태계입니다.

전 세계 개발자들이 만든 패키지를 자유롭게 사용할 수 있습니다.

예를 들어:

  • React
  • Vue
  • Express
  • Prisma
  • Socket.IO
  • Tailwind CSS

모두 npm을 통해 설치합니다.

즉 npm은 단순한 설치 도구가 아니라:

오픈소스 생태계를 연결하는 플랫폼

이라고 볼 수 있습니다.


npm 사용 시 주의할 점

npm은 편리하지만 몇 가지 주의해야 할 부분도 있습니다.

1. 무분별한 패키지 설치

패키지를 너무 많이 설치하면 프로젝트가 무거워질 수 있습니다.

또한 유지보수되지 않는 라이브러리를 사용하면 보안 문제가 발생할 수도 있습니다.


2. 보안 이슈

패키지는 외부 코드입니다.

따라서 신뢰할 수 있는 라이브러리인지 확인하는 습관이 중요합니다.

npm에서는:

 
npm audit
 

명령어로 취약점을 검사할 수 있습니다.


3. 버전 충돌

프로젝트 규모가 커지면 패키지 간 충돌이 발생할 수 있습니다.

그래서 버전 관리가 매우 중요합니다.


npm과 pnpm의 차이

최근에는 pnpm을 사용하는 프로젝트도 많아졌습니다.

대표적인 차이는:

npmpnpm
전통적인 패키지 매니저 더 빠르고 효율적인 패키지 관리
디스크 사용량이 큼 저장 공간 절약
가장 대중적 모노레포에서 강점

특히 Turborepo 기반 모노레포 프로젝트에서는 pnpm이 많이 사용됩니다.

하지만 npm은 여전히 가장 기본적이고 널리 사용되는 패키지 매니저입니다.


실제 개발에서의 npm

실무에서는 npm을 정말 자주 사용합니다.

예를 들어:

React 프로젝트 생성

 
npm create vite@latest
 

NestJS 설치

 
npm install @nestjs/core
 

Express 서버 실행

 
npm run dev
 

테스트 실행

 
npm run test
 

즉 npm은 단순한 “설치 도구”를 넘어서 프로젝트 전체를 관리하는 역할을 수행합니다.


마무리

npm은 현대 자바스크립트 개발에서 절대 빠질 수 없는 핵심 도구입니다.

처음에는 단순히 라이브러리를 설치하는 용도로만 사용하게 되지만, 개발 경험이 쌓일수록:

  • 프로젝트 관리
  • 협업
  • 배포
  • 오픈소스 활용

까지 모두 연결된다는 것을 알게 됩니다.

특히 React, Next.js, NestJS 같은 최신 기술을 공부하려면 npm 사용은 거의 필수라고 볼 수 있습니다.

처음에는 명령어가 낯설 수 있지만:

 
npm install
npm run dev
npm run build
 

같은 기본 명령어부터 하나씩 익혀 나가다 보면 자연스럽게 익숙해질 것입니다.

그리고 언젠가는 여러분도 npm에 직접 오픈소스 패키지를 배포하는 개발자가 될지도 모릅니다.