본문 바로가기

Programming/Node.js

6. 패키지 매니저 (1) - npm [1]

node js logo image

 

 

 

 

npm은 Node Package Manager입니다. 대부분의 JS프로그램은 패키지라는 이름으로 npm에 등록되어 있으며, 어떤 피처를 가진 패키지가 필요할 경우 npm에서 찾아서 실행하게 됩니다. npm에 등록된 약 190만개의 패키지를 ㅇ활용할 수 있고, 대부분 오픈소스여서 노드를 사용해 웹을 개발할 때 유용하게 사용됩니다. 

 

npm에 업로드 된 노드 모듈을 패키지라고 칭하며, 모듈과 모듈의 관계와 마찬가지로 패키지에서도 다른 패키지를 사용할 수 있습니다. 참고로 npm의 대체제로 yarn과 pnpm이 존재합니다. 

 

 

 

패키지를 여러개 설치하면 패키지의 숫자가 엄청나게 늘어나고, 또 각각의 패키지의 버전에 대한 관리도 필요해집니다. 이를 위해서 사용하는 것이 package.json입니다. 이는 노드 프로젝트 시작 전에 무조건 만들고 시작해야 합니다. 

 

우선 노드 프로젝트를 만들 임의의 폴더를 하나 생성하고, 그 안에서 콘솔로 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 init` 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: (npmexample) npmtest
version: (1.0.0) 0.0.1
description: hello package.json
entry point: (index.js)
test command:
git repository:
keywords:
author: johndoe
license: (ISC)
About to write to C:\Example\package.json:

{
  "name": "npmtest",
  "version": "0.0.1",
  "description": "hello package.json",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "johndoe",
  "license": "ISC"
}


Is this OK? (yes) yes

 

 

위에서 일부 내용은 타이핑하고, 불필요한 부분은 엔터로 스킵하였습니다. 만약 나중에 필요하다면 package.json 파일을 직접 수정해도 괜찮습니다. 아래는 package.json을 열었을 때의 파일 내용입니다. 이를 확인하고, 다음 아티클에서 각 속성에 대해서 살펴보겠습니다. 

 

 

{
  "name": "npmtest",
  "version": "0.0.1",
  "description": "hello package.json",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "johndoe",
  "license": "ISC"
}