NPM 마스터 클래스 Ep 1. NPM이 도대체 뭔가요? (ft. package.json 뜯어보기)

안녕하세요! Node.js를 설치하면 바탕화면에 아이콘도 안 생기는데, 터미널에서 `npm`이라고 치면 뭔가 주르륵 나오죠? 오늘은 Node.js의 영혼의 단짝, NPM(Node Package Manager)에 대해 알아보겠습니다.

---

1. NPM이란?

말 그대로 "Node.js 패키지 관리자"입니다.

스마트폰에 '앱 스토어'가 있다면, Node.js 세상에는 NPM이 있습니다. 전 세계 개발자들이 만들어 둔 수백만 개의 유용한 코드(패키지/모듈)들이 저장된 거대한 창고이자, 그것을 내 컴퓨터로 쉽게 가져오게 도와주는 도구입니다.

* 저장소 (Registry): 패키지들이 모여 있는 온라인 데이터베이스.

* CLI (Command Line Interface): 패키지를 설치하고 삭제하고 관리하는 터미널 도구.

2. 모든 것의 시작: npm init

새로운 프로젝트를 시작할 때 가장 먼저 해야 할 일은 "이 폴더는 Node.js 프로젝트야!"라고 선언하는 것입니다.

터미널을 열고 프로젝트 폴더에서 다음 명령어를 입력해 보세요.

npm init -y

그러면 폴더에 `package.json`이라는 파일이 짠! 하고 생깁니다. (`-y` 옵션은 귀찮은 질문들에 다 "Yes"라고 대답하겠다는 뜻입니다.)

3. package.json 뜯어보기

이 파일은 프로젝트의 "신분증"이자 "설계도"입니다.

{
  "name": "my-project",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "keywords": [],
  "author": "",
  "license": "ISC"
}

* name: 프로젝트의 이름입니다. (나중에 배포할 때 중요합니다!)

* version: 현재 버전입니다. 보통 `1.0.0`으로 시작합니다.

* main: 프로그램의 시작점이 되는 파일입니다. (보통 `index.js`나 `server.js`)

* scripts: 자주 쓰는 명령어들을 모아둔 곳입니다. (나중에 자세히 다룹니다!)

🛠️ 오늘의 미션: 첫 패키지 설치해보기

NPM의 위력을 체험해 볼까요? 날짜를 다루는 가장 유명한 패키지인 `dayjs`를 설치해 봅시다.

1. 터미널에 입력합니다.

   npm install dayjs
   

2. `package.json`을 다시 열어보세요. `dependencies`라는 항목이 추가되었죠?

   "dependencies": {
     "dayjs": "^1.11.10"
   }
   

3. 그리고 폴더를 보면 `node_modules`라는 폴더가 생겼을 겁니다. 여기에 방금 다운로드한 `dayjs` 코드가 들어있습니다.

이제 여러분은 남이 짠 코드를 내 프로젝트로 가져오는 강력한 힘을 얻었습니다!

---

🔗 다음 예고

그런데 패키지를 설치할 때 어떤 건 그냥 `install`하고, 어떤 건 `--save-dev`를 붙이라고 하던데 무슨 차이일까요? 다음 시간엔 "의존성 관리: dependencies vs devDependencies"에 대해 확실히 정리해 드립니다.