본문 바로가기
Front-End/Node.js

관련 도구 (feat. NVM, NPM, package.json)

by 연제원 2021. 1. 11.

✅ NVM

 node.js의 버전관리를 위한 관리 매니저 프로그램

Node Version Manager의 약자로, 간단한 명령어로 node를 설치하고, 다양한 node version을 옮겨 다닐 수 있다.

우리가 node.js로 개발을 하다보면, 어떤 버전에서는 실행이 잘되는데 다른 버전에서는 오류가 발생할 수 있다. 그렇다면 우리는

 

오류가 발생한 node 버전을 설치하고 수정

이전 버전을 가기위해, 새로 설치한 node 버전을 지움

사용하던 node 버전을 다시 설치

아주 불편하다!

 

이를 해결해주는 것이 NVM이다.  굳이 node버전을 설치하고 지우고를 반복할 필요없이, 여러 node 버전을 옮겨 다니면서 작업을 할 수 있게 도와준다.

 

🖋 설치 및 사용 방법

1. NVM 설치

$ touch ~/.bash_profile
$ curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.35.3/install.sh | bash

NVM 버전 확인

$ nvm --version
// 0.35.3

 

2. node.js 설치

$ nvm install 사용하고자 하는 버전
ex) $ nvm install 12.18.3

 

node.js 버전 확인

$ node -v
// v.12.19.0

 


 

✅  NPM

노드 패키지 매니저

Node Package Manager의 약자로, 필요한 모듈을 다운로드할 수 있는, 모듈들이 모여있는 모듈 스토어이다.

하나의 프로그램은 다양한 모듈이 합쳐져서 만들어진다. 하지만 우리가 개발을 할 때 모든 것을 만들어서 쓰지는 않는다. 그 이유는 가장 먼저 시간이 많이 걸리고, 우리가(특히 나) 만든 것을 100% 신뢰하기가 힘들다. 그래서 엄청 잘하는 분들이 만들어놓은 검증된 코드(모듈)를 가져다가 사용한다! 이 모듈들이 존재하는 곳이 NPM인 것이다.

 

🖋 설치 및 사용 방법

node.js를 설치하면 자동으로 설치된다.

 


 

✅ package.json

프로젝트 정보와 의존성(dependencies)을 관리하는 문서

프로젝트를 진행할 때, 대부분 협업을 통해 진행할 것이다. 이때 내가 개발하는 환경과 팀원이 개발하는 환경이 다르다면, 필요 모듈의 존재유무에 따라 오류가 발생할 수도, 정상적으로 실행될수도 있을것이다. 이러한 일을 방지하기 위해 필요한 모듈(의존성)이 무엇인지 알 필요가 있을 것이다. 서로 수정할 때마다 어떤 모듈을 썼는 지 일일이 보고하고 설치하고 이러면 얼마나 귀찮을까!

 

이때, package.json을 통해 간단하게 만들 수 있다.

package.json은 이 프로그램을 실행시키기 위해 필요한 모듈들이 무엇인지, 프로그램을 실행시키는 방법, 프로그램을 테스트하는 방법 등이 명시되어 있다. 

주의
package.json에는 어떤 모듈인지만 적혀 있다. 즉, 설치는 별개로 해야한다.
node_modules이라는 폴더에 모듈이 포함되어 있다. 설치를 안해도 된다.

 

🖋 사용 방법

npm install명령어를 통해 가능

 

파일을 작성할 때에는 JavaScript의 객체 리터럴이 아니라 올바른 JSON 포맷이어야 한다.

예시

{
  "name": "project-name",
  "version": "1.0.0",
  "keywords": [],
  "description": "",
  "main": "index.js",
  "scripts": {
    "start": "node.app.js",
    "test": "node.test.js",
  },
  "author": "HEROPY",
  "license": "MIT",
  "dependencies": {
  	"react": "^16.8.6",
  },
  "devDependencies": {
    "jest": "^2.3.0"
  }
}

name, version

필수적으로 입력되어야 하며 이 항목들이 누락되면 패키지 설치를 할 수 없다!

{
  "name": "project-name",
  "version": "1.0.0",

dependencies

일반적인 경우 의존하고 있다는 것을 알려주는 곳

프로젝트가 돌아가기위해 반드시 필요한 모듈들이 무엇인지가 적혀 있다.

  "dependencies": {
  	"react": "^16.8.6",
  }

devDependencies

개발 모드일 때만 의존하고 있다는 것을 알려주는 곳

프로젝트를 개발하는 환경에서 필요한 모듈들이 무엇인지가 적혀 있다. 실제 프로젝트 동작에 직접적인 영향은 없다.

  "devDependencies": {
    "jest": "^2.3.0"
  }

scripts

npm run 으로 실행시킬 수 있는 명령어를 정의한다. 명령어를 입력하면 어떤 동작을 해야하는지가 적혀 있다.

"scripts": {
  "start": "node app.js",
  "test": "node test.js",
}

예를 들어, CLI에서 npm start 하면 node app.js 라는 명령어가 실행되는 것이다.


버전

기호
단순 숫자 무조건 그 버전
부등호(>, >=, <=, <) 해당 부등호에 일치하는 버전
x 모든 버전
latest 최신 버전
~ 패치버전까지 변경을 허용
^ 마이너버전까지 변경을 허용

 

'Front-End > Node.js' 카테고리의 다른 글

Node.js  (0) 2021.01.11

댓글