npm과 package.json 이해하기

n

Node.js를 사용할 때 많이 보게 되는 것 중 하나가 npm입니다. npm은 무엇이며 어떻게 사용하고 어떤 일을 할 수 있는지 살펴보도록 하겠습니다.

npm

npm은 Node Package Manager의 약자로 자바스크립트 패키지 매니저이며 Node.js 설치 시 같이 설치되어 Node.js에서 사용 가능한 패키지를 설치 및 배포할 수 있습니다.

package.json

npm을 이용해 패키지를 설치하기 위해서는 package.json 파일이 필요합니다. package.json은 프로젝트의 정보와 프로젝트에서 사용 중인 패키지의 의존성을 관리하게 됩니다. 서로 다른 개발자가 하나의 프로젝트를 진행할 경우 프로젝트에 패키지를 포함하지 않고 package.json을 이용해 사용 중인 패키지를 설치할 수 있습니다.

package.json 생성하기

package.json을 생성하기 위해서는 터미널을 이용해 프로젝트의 root 위치로 이동하여 npm init 명령어를 입력합니다.

project_root$ npm init
This utility will walk you through creating a package.json file.
It only covers the most common items, and tries to guess sensible defaults.

See `npm help json` for definitive documentation on these fields
and exactly what they do.

Use `npm install <pkg>` afterwards to install a package and
save it as a dependency in the package.json file.

Press ^C at any time to quit.
package name: (sample) 
version: (1.0.0) 
description: 
entry point: (index.js) 
test command: 
git repository: 
keywords: 
author: 
license: (ISC) 
About to write to /Users/berabue/Workspaces/Nodejs/Sample/package.json:

{
  "name": "sample",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "",
  "license": "ISC"
}


Is this OK? (yes) yes

npm init 입력 시 프로젝트의 이름과 버전, 설명, 프로젝트의 시작 파일 등 프로젝트 설정에 관련된 데이터를 입력하게 되는데 이와 같은 과정이 불필요한 분들은 npm init -y 명령어로 간단하게 package.json을 생성하실 수 있습니다.

project_root$ npm init -y
Wrote to /project_root/package.json:

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

패키지 설치하기

package.json이 생성되면 외부의 다른 패키지들을 설치할 수 있는 준비가 된 상태입니다. 패키지 설치는 npm install 명령어에 설치할 패키지명을 추가하여 npm install {package name}으로 가능합니다.

여기서는 express 패키지를 설치해 보도록 하겠습니다. 터미널을 통하여 프로젝트 root 위치에서 npm install express를 입력합니다.

project_root$ npm install express
npm WARN registry Using stale data from https://registry.npmjs.org/ because the host is inaccessible -- are you offline?
npm WARN registry Using stale package data from https://registry.npmjs.org/ due to a request error during revalidation.
npm notice created a lockfile as package-lock.json. You should commit this file.
npm WARN Sample@1.0.0 No description
npm WARN Sample@1.0.0 No repository field.

+ express@4.17.0
added 50 packages from 37 contributors in 23.593s

npm이 입력된 패키지를 프로젝트 root의 node_modules 폴더에 자동으로 설치하게 되며 설치 완료 후 package.json을 확인해보면 dependencies 항목이 추가된 것을 확인할 수 있습니다.

{
  "name": "Nodejs",
  "version": "1.0.0",
  "description": "",
  "main": "main.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "dependencies": {
    "express": "^4.17.0"
  }
}

생성된 node_modules 폴더를 삭제하고 npm install 명령어를 입력하면 package.json의 dependencies 항목에 포함된 패키지들을 자동으로 설치하게 됩니다. 그렇기 때문에 서로 다른 사람과 프로젝트를 진행하는 경우 node_modules 폴더가 아닌 package.json 파일만을 공유해도 동일한 환경으로 개발이 가능하게 됩니다.

마치며

지금까지 npm의 기능과 package.json에 대해 간략하게 알아보았으며 더 자세한 내용은 아래 사이트에서 확인 가능합니다.

Add comment

By berabue

최근 글

글 목록

최근 댓글

그 밖의 기능