본문 바로가기
Tools/npm

NPM이란 무엇인가요?

by RuntimeSimple 2024. 11. 13.

💡 NPM이란 무엇인가요?

NPM은 Node Package Manager의 약자로, 자바스크립트 개발에서 필요한 도구와 라이브러리를 설치하고 관리하는 도구입니다.

쉽게 말해, "코드가 더 편하게 작동하도록 도와주는 앱 스토어 같은 것"입니다.


🌟 NPM이 왜 필요한가요?

만약 우리가 개발을 하면서 매번 모든 기능을 처음부터 끝까지 직접 코딩한다면 너무 시간이 오래 걸립니다.

그래서 이미 다른 개발자들이 만들어 놓은 코드를 다운로드해서 사용하는데, 이때 NPM이 그 코드를 편리하게 관리해 줍니다.


📂 NPM의 구성 요소 (쉽게 이해하기)

구성 요소 설명

패키지 패키지는 특정 기능을 미리 만들어 둔 자바스크립트 코드라고 생각하면 됩니다.
예를 들어, React는 웹사이트 화면을 만들 때 사용하는 도구이고,
Lodash는 복잡한 데이터 작업을 쉽게 해주는 도구입니다.
쉽게 말해, 필요한 기능이 들어있는 상자라고 보면 됩니다!
package.json 프로젝트의 설명서 같은 파일입니다.
어떤 도구(패키지)를 사용하는지, 버전은 무엇인지 등을 기록합니다.
CLI (명령어 도구) 명령어를 입력해 NPM을 사용합니다. 예를 들어, "React 설치해줘" 같은 요청을 명령어로 전달합니다.
Registry (저장소) NPM 패키지가 모여 있는 중앙 창고입니다. npmjs.com에서 전 세계 개발자들이 올린 도구를 찾아 다운로드할 수 있습니다.
node_modules 설치된 패키지가 저장되는 폴더입니다. 예를 들어, "React 설치" 명령을 실행하면 React 패키지가 여기에 저장됩니다.

📦 NPM은 어떻게 작동하나요?

  1. 패키지를 설치하면:
    • 명령어로 "React 같은 도구를 내 프로젝트에 추가해줘"라고 요청합니다.
    • NPM은 중앙 창고(Registry)에서 해당 도구를 다운로드해 프로젝트에 추가합니다.
  2. 설치된 도구 관리:
    • package.json 파일에 설치된 도구와 버전을 자동으로 기록합니다.
    • 다른 사람이 내 프로젝트를 사용해도 똑같은 도구 환경에서 작업할 수 있게 만듭니다.
  3. 스크립트 실행:
    • npm run start 같은 명령어로 개발을 편리하게 실행합니다. (예: 프로젝트 시작, 코드 빌드)

📄 package.json 쉽게 이해하기

package.json은 "내 프로젝트의 설명서"입니다.

어떤 도구(패키지)를 사용하는지, 필요한 명령어가 무엇인지 기록되어 있습니다.

 

예시 파일:

{
  "name": "my-first-app", // 프로젝트 이름
  "version": "1.0.0",     // 프로젝트 버전
  "scripts": {            // 자주 사용하는 명령어 모음
    "start": "node app.js",
    "build": "webpack --mode production"
  },
  "dependencies": {       // 필요한 도구(패키지) 목록
    "react": "^18.2.0"
  },
  "devDependencies": {    // 개발할 때만 필요한 도구 목록
    "webpack": "^5.0.0"
  }
}
  • scripts:
    • 프로젝트를 실행하거나 빌드할 때 사용하는 명령어를 정의합니다.
    • 예: npm run start → app.js 실행
  • dependencies:
    • 실제 서비스에 필요한 도구들입니다.
    • 예: React는 사용자가 화면을 보는데 필요한 도구입니다.
  • devDependencies:
    • 개발할 때만 필요한 도구들입니다.
    • 예: Webpack은 코드를 압축하거나 변환하는 개발용 도구입니다.

⚙️ NPM 주요 명령어

명령어 기능

npm init 프로젝트 시작을 위해 package.json 생성
npm install react React 패키지 설치
npm install -g <패키지> 전역(Global) 설치 (컴퓨터 전체에서 사용할 도구를 설치)
npm uninstall react React 패키지 삭제
npm update 설치된 패키지를 최신 버전으로 업데이트
npm run start package.json에 정의된 스크립트 실행 (예: 프로젝트 시작)
npm cache clean --force NPM 캐시 데이터 삭제 (문제가 생길 때 사용)

📦 React 프로젝트 설정 예시

1. 폴더 만들기

프로젝트를 시작할 폴더를 생성하고 해당 폴더로 이동합니다:

mkdir my-react-app && cd my-react-app

 

2. 프로젝트 초기화

package.json 파일을 자동 생성합니다:

npm init -y

 

y의 역할:

  • y 옵션은 질문들을 모두 기본 값(default)으로 설정하고 바로 package.json 파일을 생성합니다.
  • 시간을 절약하며, 빠르게 프로젝트 초기화를 할 수 있습니다.

 

3. React 설치

React와 ReactDOM(React와 함께 필요한 도구)을 설치합니다:

npm install react react-dom

 

여기서 잠깐!!

 

ReactDOM이란?

ReactDOM은 React로 만든 화면(UI)을 브라우저에 보여주는 역할을 하는 도구입니다.

React는 "어떤 화면을 만들지" 정의하는 역할을 합니다.

하지만 정의된 화면을 실제로 웹 브라우저에 표시하려면 ReactDOM이 필요합니다!

 

예시로 이해하기

HTML 파일에 이런 부분이 있다고 가정해봅시다:

<div id="root"></div>

 

React에서는 화면을 이렇게 만들었다고 가정할게요:

function App() {
    return <h1>Hello, React!</h1>;
}

여기까지는 화면이 만들어졌지만, 아직 브라우저에 표시되지 않았습니다.

 

ReactDOM의 역할

 

이제 ReactDOM이 등장해서, 화면을 브라우저에 표시합니다:

import ReactDOM from "react-dom";

ReactDOM.render(<App />, document.getElementById("root"));

결과적으로 HTML 파일의 <div id="root"></div> 부분에 "Hello, React!"가 표시됩니다.

 

한 줄로 정리하자면

ReactDOM은 React 컴포넌트가 브라우저에서 실제로 보이도록 도와주는 다리(Bridge)입니다!

 

4. 스크립트 실행

프로젝트를 실행하거나 테스트합니다:

npm run start

 


💡 NPM의 장점

  1. 시간 절약:
  2. 이미 만들어진 도구(패키지)를 가져와 사용할 수 있어, 모든 기능을 직접 코딩할 필요가 없습니다.
  3. 효율적인 협업:
  4. package.json과 package-lock.json을 통해 팀원 모두가 동일한 환경에서 작업할 수 있습니다.
  5. 광범위한 생태계:
  6. 200만 개 이상의 패키지가 NPM 저장소에 등록되어 있어, 필요한 모든 기능을 쉽게 찾을 수 있습니다.

NPM vs Yarn 비교

특징 NPM Yarn

속도 최신 버전에서 개선됨 더 빠른 캐시 시스템을 활용
명령어 npm install 사용 yarn add 사용
설치 속도 병렬 처리 제한적 기본적으로 병렬 설치 지원
파일 잠금 package-lock.json 사용 yarn.lock 사용

 

* yarn에 대해서는 다음 포스팅에서 다루도록 하겠습니다.


✨ 요약: NPM은 이렇게 사용하세요!

  1. 개발 시작하기:
    • npm init으로 프로젝트 초기화
    • npm install로 필요한 도구 설치
  2. 작업 자동화:
    • npm run <스크립트>로 명령어 실행
  3. 협업:
    • package.json으로 모든 팀원이 동일한 개발 환경 유지

NPM은 초보자부터 전문가까지 모두가 사용하는 개발 도우미입니다.

NPM을 잘 활용하면 개발 속도를 높이고, 반복 작업을 줄일 수 있습니다.

 


이렇게 오늘 NPM에 대해 알아봤습니다. 틀린 점이나 궁금한 부분이 있다면 댓글로 알려주세요!

함께 공부하며 성장해 나가요 😊✨