본문 바로가기
Programming JavaScript/Node

nodenv를 통해 프로젝트별 node version 을 관리해 봅시다.

by jjerryhan 2018. 5. 5.
반응형

안녕하세요?
지난번 포스트에 이어 설치된 nodenv 를 이용해서 특정 버전의 node 를 설치하고 관리 하는 방법에 대해 알아 보겠습니다.


nodenv 환경구성하기

nodenv 설치 방법에 대한 상세 내용은 이전 포스트를 참조해 주세요. http://dreamholic.tistory.com/101

1. nodenv 환경에서 특정 node version 관리하기

nodenv 는 내부에서 node-build 플러그인을 통해 특정 node 에 대한 설치 및 제거를 지원합니다.
nodenv install 명령어는 nodenv 가 직접 처리하지 않고 내부에서 node-build 를 이용하여 처리합니다.

node-build 는 nodenv 의 플러그인으로 nodenv install 명령어 실행시에 실제 대상이 되는 특정 버전의 node 를 OS 에 설치해 주는 기능을 제공합니다. node-build 는 nodenv 와 독립적으로 설치 및 구성하여 사용도 가능합니다.

따라서 nodenv install 명령어를 사용하려면 우선 node-build 플러그인을 추가로 설치해야 합니다.

  • node-build 가 설치되지 않은 nodenv 의 경우
    Screen Shot 2018-05-05 at 3.17.52 PM.png

  • node-build 가 설치된 nodenv 의 경우
    Screen Shot 2018-05-05 at 3.18.27 PM.png

MAC 에서 brew 를 통해 nodenv 를 설치하였을 경우에는 node-build 가 함께 번들되어 설치되기 때문에 별도로 node-build 를 설치할 필요가 없지만, git checkout 을 통해 설치한 경우에는 node-build 가 설치되지 않기 때문에 반드시 추가로 설치해야 합니다.

node-build 설치 및 구성에 대한 안내는 아래 포스트를 참조하시기 바랍니다. http://dreamholic.tistory.com/109

node-build 를 설치 완료하지 않으면 아래 내용의 실습이 불가하니 반드시 node-build 환경을 우선 구성한 후 아래 내용을 참조하시기 바랍니다.

사용가능한 버전들 목록 조회하기

nodenv install -l

nodenv 는 현재 설치 가능한 모든 node version 목록을 제공합니다.

$ nodenv install -l

node-build 로 설치가능한 모든 node version 목록이 출력 됩니다.
Screen Shot 2018-05-05 at 3.18.55 PM.png
(초기버전의 node 에서 부터 )

Screen Shot 2018-05-05 at 3.19.15 PM.png
(가장 최신 버전의 node 및 다른 배포판 까지 보실 수 있습니다)
조회된 모든 버전의 node version 설치가 가능합니다.

특정 node version 설치하기

우선 안정 버전의 node 를 설치해 보도록 하겠습니다.
가장 최신 버전의 node 는 현재 10.0.0 (2018년 5월 초) 이지만 프로젝트에서 사용하려면 이슈 발생시에 추가적인 조치 또는 패치 지원이 가능한 LTS (Long Term Support) 버전인 8.11.1 을 설치하도록 합시다. (LTS 에 대한 설명은 추후 다른 포스트에서 간단히 다루겠습니다)

nodenv install [version number]

$ nodenv install 8.11.1

Screen Shot 2018-05-05 at 3.29.27 PM.png

위와 같이 설치하고자 하는 node version(8.11.1) 을 nodenv install 명령어를 통해 간단히 설치할 수 있습니다.

node install 을 사용하지 않고 node 설치하기

node install 을 사용하지 않고도 원하는 버전의 node 를 설치할 수 있습니다.

nodenv 는 사용가능한 node 들을 ~/.nodenv/versions 경로에서 조회하기 때문에 node install 을 사용하지 않을 경우에는 수작업으로 특정 버전의 node 를 다운받아서 컴파일 한 후 ~/.nodenv/versions 경로에 배치(또는 symlink 추가)하면 됩니다.
(굳이 nodenv install 을 사용하지 않는 익스트림함을 원하신다면 말이죠)

versions 경로하위에 생성된 디렉토리의 이름으로 버전을 구분하니 참조하시기 바랍니다. 다른 버전을 설치하고 디렉토리 이름을 변경해서 교묘하게 시스템 운영에 차질을 줄수도
Screen Shot 2018-05-05 at 3.37.11 PM.png

설치된 node version 삭제

더이상 사용할 이유가 없어진 version 의 node 는 삭제를 해야겠죠.

과거 버전의 node 를 제거하려면 두가지 방법이 있습니다.

node 가 설치되어 있는 경로에 파일를 직접 삭제해서 node 삭제하기

$ rm -rf [node installed path] 

직접 설치된 경로를 찾아 rm 으로 파일을 모두 삭제해 주면 됩니다.

nodenv uninstall 명령어를 통해 삭제하는 방법

직접 파일경로를 찾아서 지우는 불편한 방식 대신 nodenv uninstall 을 통해 간단히 삭제할 수 있습니다.

nodenv prefix

특정 node 를 삭제하기 위해 특정 versions 의 node 가 설치된 위치를 확인하려면 nodenv prefix 명령어를 수행하시면 됩니다.

$ nodenv prefix 8.11.1

Screen Shot 2018-05-05 at 3.41.35 PM.png

위와 같이 설치 위치가 확인이 되면 직접 해당 경로를 지우셔도 되고, nodenv uninstall 명령어를 이용하셔도 됩니다.

nodenv uninstall [version number]

nodenv uninstall 명령어를 통해 특정 버전의 node 를 삭제합니다.
Screen Shot 2018-05-05 at 3.46.17 PM.png

2. nodenv 환경에서 node version 지정하기

nodenv local

현재 작업경로상의 프로젝트에서 사용할 node version 만을 지정하고자 하는 경우에는 nodenv local 명령어를 사용하면 됩니다.
node local명령어는 사용자가 지정한 버전 정보를 .node-version 파일을 생성하여 저장해 줍니다.

 $ nodenv local 0.10.0

Screen Shot 2018-05-05 at 4.19.22 PM.png

설치된 버전을 지정하지 않으면 오류가 나고, 특정 버전을 지정하면 .node-version 파일이 생성됩니다.
버전을 지정하지 않고 실행하면 설치 설정되어 있는 version 정보를 출력합니다.
Screen Shot 2018-05-05 at 4.21.16 PM.png

nodenv local --unset

지정된 node version 은 unset 명령어로 해제할 수 있습니다.

nodenv local --unset

Screen Shot 2018-05-05 at 4.23.02 PM.png

nodenv global

특정 경로별로 실행 node 버전을 지정하지 않고, 시스템 레벨의 실행 node version 을 지정할 경우에는 nodenv global 을 사용합니다.

nodenv global 8.11.1

Screen Shot 2018-05-05 at 4.25.10 PM.png

Screen Shot 2018-05-05 at 4.25.38 PM.png

nodenv global 명령어는 사용자의 홈 경로에 version 파일을 생성하고 해당 파일에 버전 정보를 저장합니다.
nodenv global --unset 은 지정된 global 설정을 해제합니다.

nodenv global 은 현재 global 로 지정된 설정을 확인합니다.

본 포스트에서는 nodenv 를 이용해서 특정 버전의 node 를 설치하고 삭제하고, 실행대상 version 을 지정하고 해제하는 방법을 알아보았습니다.

다음 포스트에서는 실행시에 버전을 직접 지정하는 방법과 현재 환경의 Active 한 버전 정보를 조회하는 방법에 대해 다루도록 하겠습니다.
긴글 읽어주셔서 감사합니다.