nvm 과 npm 구별하기
사용을 하면서도 가끔가다 둘의 차이가 뭐였더라? 하는 의문을 갖게되는 nvm
과 npm
. 아마도 알파벳 하나의 차이 때문이라고, 비영어권 사용자의 애환이라고 변명을 하는것도 슬슬 졸업을 해야겠다 싶어 기록을 해 둡니다.
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
, pleasebrew 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 ..."],
독자 의견
저자 @richard 에게 의견 남기기: