기본적으로 노드는 LTS 버전인 v4를 설치해서 사용한다. LTS 버전을 사용하면 좀더 안정적으로 지원받을 수 있다는 생각 때문이다. 그러나 요즘 개발툴들은 노드기반의 것이 많고 상위 버전의 노드를 요구하는 경우가 종종 있기 때문에 내 컴퓨터에 여러 버전의 노드를 설치해야할 필요가 생겼다.

NVM은 컴퓨터에 다양한 버전의 노드를 설치할 수 있게 해주는 툴이다.

설치

NVM 문서에 있는 설치 스크립트로 설치한다.

$ curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.31.4/install.sh | bash

설치하고 나면 내 컴퓨터에 두 가지가 변화가 생긴다.

첫번째, 쉘 설정 파일에 nvm 명령어 스크립트가 추가된다. zsh 쉘을 사용하는 내 경우 설정 파일인 ~/.zshrc 파일에 nvm 경로와 실행 스크립트 파일이 추가되었다.

~/.zshrc:

export NVM_DIR="/Users/Chris/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh"  # This loads nvm

두번째 변화는 ~/.nvm 폴더가 생성된다. 이 폴더에 NVM을 이용해 설치한 노드가 버전별로 다운로드 되는데 versions 폴더에 각 버전을 확인 할 수 있다. 아직은 어떤 버전의 노드도 설치하지 않았기 때문에 비어있을 것이다.

명령어

노드 최신 버전을 한번 설치해보자.

$ nvm install node

별도의 버전을 지정하지 않고 설치하면 설치당시의 최신버전을 찾아서 설치한다. 내가 설치한 것은 v6.3.1이 었다.

$ node --version

그리고 node 명령어를 실행하면 ~/.nvm/versions 폴더에 있는 노드 실행파일이 실행된다.

$ which node
/Users/Chris/.nvm/versions/node/v6.3.1/bin/node

그럼 NVM에서 지원하는 노드 버전은 몇가지나 될까?

$ nvm ls-remote

v0.1.14부터 v6.3.1까지 321개의 노드 버전을 사용할 수 있고 그중에는 io.js도 포함되어있다. 아마 출시된 모든 노드 버전을 모두 지원하는듯 하다.

그럼 이제 노드 v4를 설치해 보자.

$ nvm install v4
Now using node v4.4.7 (npm v2.15.8)

v4 까지만 입력해면 해당 버전의 최신버전인 v4.4.7를 자동으로 찾아서 설치한다. 이제 로컬에 설치한 노드는 총 세가지 버전이 되었다.

$ nvm ls
->       v4.4.7
         v6.3.1
         system
default -> v4.4.7

다시 v6.3.1을 사용하려면 use 옵션을 사용하면 된다.

$ nvm use v6.3.1

그러나 터미널을 종료하면 다시 노드 v4.4.7로 변경되는데 이것은 NVM의 노드 기본버전이 v4.4.7로 설정되어 있기 때문이다. alias 옵션으로 기본 노드 버전을 변경할 수 있다. 이미 OS에 설치해 놓은 system 버전을 기본(default)으로 변경해 보자.

$ nvm alias default system
default -> system

터미널을 다시 시작하여 확인해 보면 system 에 설치한 노드가 실행될 것이다.

$ which node
/usr/local/bin/node