Kudos
Collect
Twiiter
Facebook
Share
Develop somethings, meditation, reading and thinking...

nvm 과 npm 구별하기

Last updated over 3 years ago
1 0 0 0

사용을 하면서도 가끔가다 둘의 차이가 뭐였더라? 하는 의문을 갖게되는 nvmnpm. 아마도 알파벳 하나의 차이 때문이라고, 비영어권 사용자의 애환이라고 변명을 하는것도 슬슬 졸업을 해야겠다 싶어 기록을 해 둡니다.

nvm - Node Version Manager

풀어쓰면 너무너도 명확하게 알 수 있습니다. Node.js 의 버젼 관리자… 라고 하기에는 의미가 조금 더 넓습니다. 버젼 관리자라고 이해를 하면 업데이트 하는 프로그램? 정도로 생각하기 쉬운데, 이 보다는 Node.js 의 각 버젼을 유지하면서 시스템을 구성해야 하는 경우를 위해 사용하는 경우에 많이 이용됩니다. 다시말해 같은 시스템 안에서 여러 Node.js 를 사용하기 위해 버젼별로 Node.js 환경을 격리시키는 역할로써 더 많이 사용되지 않나 싶습니다.

Node.js 의 여러 버젼을 마음대로 골라 설치할 수 있게 해 주는 프로그램.

nvm 은 Node.js 를 설치하는 툴

nvm 은 Node.js 를 설치하는 툴이라는 이해가 중요합니다. 시스템에 Node.js 를 설치하는 방법은 여러가지가 있습니다. Debian 계열 리눅스에서는 $ apt-get install nodejs 하면 쉽게 설치되는데, 이렇게 OS에서 직접 설치를 하게 되면 나중에 본격적인 Node.js 프로젝트를 시작하는데 문제가 생깁니다. OS에 특정 버젼의 Node.js 를 설치하면, 위에서도 이야기한 여러 버전의 Node.js 를 설치해야 할 경우에 대응을 할 수가 없게 됩니다.

그렇기 때문에 먼저 nvm 을 설치하고, 설치한 nvm 을 통하여 원하는 특정 버젼의 Node.js 를 원하는 조건에 따라 복수로 설치하는 방법이 나중을 위해서는 더 좋은 방법이 될 수 있습니다.

문제는 nvm 이 Node Version Manager 라는 이름 때문인지 Node.js 를 설치한 다음에 nvm 을 설치하는 순서로 오해하게 된다는 것 이었습니다. (영어권 원어민이 아니라서 그럴거라고 생각하면 마음이 편해집니다. 😅)

기억하기 위해서 정리하면,

nvm ➝ Node.js ➝ npm ⭕️
or
apt or yum or brew ➝ Node.js ➝ npm ⭕️ (비추천)
but,
Node.js ➝ nvm ❌ (불가능)

nvm 은 Node.js 를 설치하기 위한 툴입니다. :)

npm - Node Package Manager

노드 패키지 매니저. 간단하게 얘기하면 npm 서비스를 통하여 Node.js 로 개발된 프로그램을(npm 패키지) 편리하게 설치, 업데이트 및 삭제를 해 주는 프로그램이라고 생각하면 되겠습니다.

npm 은 Node.js 를 OS 에 직접 설치하였든 nvm 으로 설치하였든지에 관계없이, Node.js 가 설치된 상태에서(Node.js 를 설치하면 npm 도 같이 설치됨.) npm 명령어를 이용하여 npm 서비스에 등록된 Node.js 로 작성된 패키지를 관리하는 프로그램 입니다.

정리하면

다음의 방법으로 설치하는 것이 아마도… :)

(1) nvm 을 설치하고 설치한 nvm 을 이용하여 원하는 조건으로,
(2) Node.js 를 설치한 후에,
(3) npm 을 이용하여 필요한 패키지를 추가 설치한다.

누군가의 퇴근에 도움이 되길 바랍니다.

참고문헌

https://github.com/creationix/nvm
https://www.npmjs.com/

Mac 에 brew 를 이용하여 nodejs 를 설치할 경우

brew install node 로 brew 를 이용하여 바로 node 를 설치하지 않는것이 좋다.

Homebrew installation is not supported. If you have issues with homebrew-installed nvm, please brew uninstall it, and install it using the instructions below, before filing an issue.
https://github.com/nvm-sh/nvm

2019 update: Use NVM to install node, not Homebrew
https://stackoverflow.com/questions/28017374/what-is-the-suggested-way-to-install-brew-node-js-io-js-nvm-npm-on-os-x

Fixing npm On Mac OS X for Homebrew Users
https://gist.github.com/DanHerbert/9520689

공식 페이지의 설치방법에 따라,

# clone this repo in the root of your user profile
$ cd ~/
$ git clone https://github.com/nvm-sh/nvm.git .nvm
$ cd ~/.nvm
# $ git checkout v0.35.3

# activate nvm by sourcing it from your shell: . nvm.sh
# Now add these lines to your ~/.bashrc, ~/.profile, or ~/.zshrc file to have it automatically sourced upon login: (you may have to add to more than one of the above files)

$ vi .zshrc

# 마지막 줄에 추가

# official
# https://github.com/nvm-sh/nvm
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh"  # This loads nvm
[ -s "$NVM_DIR/bash_completion" ] && . "$NVM_DIR/bash_completion"  # This loads nvm bash_completion

### If you installed zsh-nvm
# zsh-nvm
# https://github.com/lukechilds/zsh-nvm#as-an-oh-my-zsh-custom-plugin
export NVM_DIR="$HOME/.nvm"
#plugins+=(zsh-nvm)
source $ZSH/custom/plugins/zsh-nvm/zsh-nvm.plugin.zsh

nvm의 설치가 끝나면 nodejs 를 설치한다.

$ nvm install node
...
$ node --version
v14.2.0
$ where node
/Users/someone/.nvm/versions/node/v14.2.0/bin/node

이렇게 최신버젼의 nodejs 가 설치된다.

nvm 및 npm(node.js) 업그레이드

nvm 업그레이드

nvm 만 업그레이드한 후, 새로운 버젼의 node.js 를 설치하고, 환경을 갈아타는 방식으로 진행한다. 이렇게 하면 기존의 환경을 그대로 둘 수 있어 이전 개발환경을 그대로 유지할 수 있다.

https://github.com/nvm-sh/nvm#manual-upgrade

Note: If you're using zsh you can easily install nvm as a zsh plugin. Install zsh-nvm and run nvm upgrade to upgrade.

라고 되어 있기 때문에 zsh 환경일 경우, nvm upgrade 로 간단하게 업그레이드가 된다.

$ nvm upgrade

node.js 업그레이드

현재 사용중인 버젼 확인

$ nvm current
v14.2.0

새로운 버젼을 설치

$ nvm install 14.15.1
$ nvm current
v14.15.1

기존의 패키지 새 환경에 맞게 다시 설치

이렇게 하면 자동으로 zsh 환경에 새로운 버젼의 node.js 가 적용이 되므로 이전 버젼에서 사용했던 글로벌 패키지가 있으면 확인후 설치해 준다.

기존 환경의 패키지를 확인하고,

$ nvm use 14.2.0
$ nvm current
v14.2.0
$ npm list -g --depth=0
/Users/someone/.nvm/versions/node/v14.2.0/lib
├── less@3.11.1
├── less-plugin-clean-css@1.5.1
├── npm@6.14.4
├── sass@1.26.8
└── terser@4.6.13

새로운 환경에 같은 패키지들을 설치한다.

$ nvm use 14.15.1
$ nvm current
v14.15.1
$ npm install -g less
$ npm install -g less-plugin-clean-cs
npm ERR! code E404
npm ERR! 404 Not Found - GET https://registry.npmjs.org/less-plugin-clean-cs - Not found
npm ERR! 404
npm ERR! 404  'less-plugin-clean-cs@latest' is not in the npm registry.
npm ERR! 404 You should bug the author to publish it (or use the name yourself!)
...
# 이렇게 사라진 패키지들도 있으므로 이때 정리해 두면 좋겠다.
$ npm install -g terser
$ npm list -g --depth=0
/Users/someone/.nvm/versions/node/v14.15.1/lib
├── less@3.12.2
├── npm@6.14.9
└── terser@5.5.0

필요에따라 Shell 환경변수 설정 업데이트

마지막으로,
개발환경에서 새로운 node.js 를 사용하고 싶으면 관련 설정도 업데이트 해 준다. 다음과 같이 Shell 의 환경변수 설정이 있다면 수정해 준다.

"cmd": ["/bin/zsh", "-c", "export PATH=$PATH:~/.nvm/versions/node/v14.15.1/bin; /usr/bin/php ..."],

Hi, my name is Richard. I’m a developer wants to make the world better with logic power. Mainly I use Linux, Nginx, MySQL, PHP and JavaScript . I want to share my knowledge with someone that it was also based from some great persons via LYNMP. 👨‍💻

Essedrop - Make your file online instantly
 

Responses

Leave a response to @richard

Please sign in to comment.
Markdown is also available in comment.