[Node.js] NVM, NPM

박연주·2023년 11월 8일
0

NVM, NPM

  • nvm(node version manager) - Node.js의 버전 관리자
  • npm((node package manager) - Node.js로 개발된 프로그램(npm 패키지)를 편리하게 설치, 업데이트 및 삭제 해 주는 프로그램

Node.js

  • "Node.js는 Chrome V8 JavaScript 엔진으로 빌드된 JavaScript 런타임입니다."

Chrome V8 JavaScript 엔진

  • 구글에서 제작한 자바스크립트 엔진
  • 여기서 자바스크립트 엔진이란 자바스크립트 코드를 실행하는 프로그램 또는 인터프리터를 뜻한다.

JavaScript 런타임

  • 런타임은 프로그래밍 언어가 구동되는 환경을 말한다.
  • 즉, JavaScript 언어가 구동되는 환경.

종합하자면,
Node.js는 Javascript 를 실행 시킬 수 있도록 하는 오픈소스 서버 환경이다.
로컬 컴퓨터에서 JavaScript 로 개발을 하고싶다면 Node.js 를 설치해야한다.
-> Java를 개발하기 위해 JRE(JVM) 를 설치하는 것과 같은 원리


설치 순서

  1. nvm → Node.js → npm (추천)
  2. brew → Node.js → npm (OS에 직접 설치, 비추천)
  3. Node.js → nvm (불가능) -> node를 미리 설치했다면 삭제 후 다시 설치


NVM (Node Version Manager)

nvm is a version manager for node.js, designed to be installed per-user, 
and invoked per-shell. 
  • Node.js 버전 관리 도구
  • 사용이유
    • 협업을 할 때, 또는 다양한 프로젝트를 동시에 진행해야 할 때 라이브러리, 프레임워크, 개발툴의 버전 호환 문제를 겪기때문
  • 장점
    • 다양한 버전의 Node.js 설치 가능
    • use 커맨드를 이용해 Node 버전 간단하게 스위칭 가능
    • 디폴트 버전 설정, 설치 버전들 확인, 필요 없는 버전 삭제 등 버전 관리가 쉬워짐
    • 루비 - rvm, rbenv , 파이썬 - pyenv도 같은 역할

설치

  • 공식 문서에 따라 설치
  • nvm, node 설치 - cmd 창에서 설치 후 node 버전 확인
# 설치된 nvm 버전 확인
$ nvm -v

# node.js 버전 설치하기
$ nvm install 0.10
$ nvm install v0.1.2
$ nvm install v8

# 현재 사용중인 node.js 버전 확인하기
$ nvm current
$ node -v

# 현재 사용중인 버전 확인하기
$ nvm current

# node.js 설치 경로 확인하기
$ which node

# 필요없는 node 버전 삭제하기
$ nvm uninstall <version>

# 여러버전 사용해보기
$ nvm use 16
Now using node v16.9.1 (npm v7.21.1)
$ node -v
v16.9.1
$ nvm use 14
Now using node v14.18.0 (npm v6.14.15)
$ node -v
v14.18.0
$ nvm install 12
Now using node v12.22.6 (npm v6.14.5)
$ node -v
v12.22.6



NPM(Node Package Manager)

  • node.js 기반으로 미리 잘 만들어진 패키지들을 사용하고 싶을 때 의존성 있는 패키지들을 설치하려면 npm을 이용

    💡 Node Package : Node.js 환경에서 사용가능한 모듈(라이브러리)

  • node.js 설치 시 자동으로 설치 됨
  • node.js 환경에서 사용 가능한 패키지를 다운 받을 수 있게 하는 도구
    -> 다운 받아진 모듈들은 ./node_modules 에 설치된다.
  • node.js - npm 처럼 다른 언어들도 패키지가 있다
LanguagePackage Manager
RubyGem
PHPComposer
C#NuGet
JavaJpm
Pythonpip
  • 패키지 설치
$ npm install (in a package directory, no arguments)


Package

package.json

  • 패키지 매니저(npm, yarn)을 통해 설치한 모듈들의 의존성을 관리하는 json형식의 파일
  • name, version, description, author, license 등 프로젝트 정보 및 설치한 모듈을 정의할 수 있음
  • 모듈 관리파일이기 때문에 npm으로 모듈 다운로드 시 package.json에 입력됨
    -> npm install로 다운 가능

package-lock.json

  • package.json과 같이 모듈의 버전을 관리하는 파일
    -> node_modules나 package.json이 수정될 때마다 자동 생성됨

차이

  • package.json은 모듈의 버전을 정의할 때 '~4.16.1' 또는 '^2.16.0' 같은 version range 를 사용
  • package-lock.json 은 정확한 버전을 명시

    💡 version range
    버전의 이상, 미만 등을 나타낼 수 있는 방법


더 알아보기

package.json에 명확한 버전을 입력하면 package-lock.json이 필요 없지 않을까?

-> package.json에 항상 명확한 버전을 입력한다면,
모든 개발자의 환경에서 버전 업데이트가 일어날 때마다 npm install을 해줘야한다.

각자 미묘하게 다른 버전은 pacakge.json의 version range 라는 이점을 사용해 개발하고,
버전 문제로 큰 버그가 생긴다면 package-lock.json으로 버전을 명확히 일치시켜 해결할 수 있다.

-> package-lock.json 이 존재한다면, npm installpackage.json이 아닌 package-lock.json 의 버전대로 install





Reference

https://github.com/nvm-sh/nvm - nvm 공식문서
https://docs.npmjs.com/cli/v8/commands/npm-install - npm 공식문서
https://velog.io/@mayinjanuary/NVM-%EC%9D%B4%EB%9E%80-%EB%85%B8%EB%93%9CNode.js-%EB%B2%84%EC%A0%84-%EA%B4%80%EB%A6%AC%ED%95%98%EB%8A%94-%EB%B2%95 - nvm으로 node 버전 관리
https://doozi0316.tistory.com/entry/Nodejs%EB%9E%80-NPM%EC%9D%B4%EB%9E%80-NVM%EC%9D%B4%EB%9E%80 - package.json
https://programmingsummaries.tistory.com/385 - package.json

profile
하루에 한 개념씩

1개의 댓글

comment-user-thumbnail
2023년 11월 9일

이제는 노드까지 섭렵하시는겁니까!!

답글 달기