NodeJS / nvm 기반 개발환경 설치
Node.js를 설치하고 관리할 수 있는 Node Version Manager를 사용한 개발환경 구성에 대해 살펴본다.
2018-6
npm i
관련 설명 추가
{:.right-history}
버전관리자를 통한 Node.js 개발환경
Node.js는 커뮤니티 개발을 위주로 업그레이드가 자주 된다. 개발중인 관련 모듈이 업그레이드를 따라가지 못할 경우가 자주 발생할 수 있다. 그래서 실제 개발하는 경우에 Node.js 버전의 변경을 자유롭게 하기 위해서 버전관리자(Node Version Manager) 환경에서 개발을 권장한다.
주요한 버전관리자에는 Nvm, Nodist 등 여러 종류가 있는데, 대부분 리눅스와 맥에서 사용 가능하다. 그리고 윈도우 환경에서는 nvm-windows, nodist를 사용할 수 있다.
- Linux/macOS: https://github.com/creationix/nvm
- Windows: https://github.com/marcelklehr/nodist
버전관리자를 설치후 사용 방법은 대동소이 하다. 여기서는 nvm을 다룬다.
Shell 은 쉘 프롬프트로 사용자 권한 및 현재 위치를 표시하는데 보통 권한별로 아래 기호를 사용한다.
$
: 사용자 프롬프트#
: root 프롬프트~
: 사용자 홈 디렉토리/
: 루트 디렉토리.
: 현재 디렉토리..
: 이전 디렉토리
nvm 설치
Linux / MacOS는 다음 쉘 스크립을 실행해 설치한다.
curl 이용:
1 | curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.4/install.sh | bash |
wget 이용:
1 | wget -qO- https://raw.githubusercontent.com/creationix/nvm/v0.33.4/install.sh | bash |
install.sh 스크립이 설치하는 nvm은 사용자 홈디렉토리 ~/.nvm
에 설치된다. (이후 $NVM_HOME이라 하겠다)
$NVM_HOME/install.sh 를 실행하면 업그레이드가 진행된다.
설치후 ~/.bash_profile, ~/.profile 등의 프로파일에 nvm.sh
가 실행되도록 아래 스크립이 추가된다.
1 | export NVM_DIR="$HOME/.nvm" |
Node.js 설치
원격 저장소의 node 목록
1 | nvm ls-remote |
nvm install
은 해당 node version를 다운로드하고 설치한다.
1 | nvm install v5 # node version v5.x 버전중 최종버전 |
nvm ls
설치된 node 버전을 확인한다
1 | $ nvm ls |
nvm use
로 사용할 node version을 지정한다 - 이것은 사용자의 $PATH
환경변수에 node
경로를 추가해준다.
1 | nvm use 6.9.1 #v6 버전을 사용한다. |
node
경로를 제거하려면,
1 | nvm deactivate |
로그인후 기본 node 환경으로 지정하려면
1 | nvm alias default 6.9.1 |
lts 버전
Node.js 는 가용 버전이 장기지원을 위해서 LTS(Long Term Support) 프로그램을 진행하고 있다. 실제 운영 서버는 이런 LTS 버전을 중심으로 가동될 것이다. nvm 도 lts 만을 선별해서 설치하고 관리할 수 있다.
현재 LTS 버전중 최신버전만을 출력하려면,
1 | nvm ls-remote --lts |grep Latest |
전역 패키지 통합
nvm에서 새로운 node 버전을 설치하면서 기존 node 버전에서 사용중인 패키지를 통합해서 설치 할 수 있다. 예를 들어 최신 8 버전을 설치하며 사용중인 기존 6버전 패키지를 함께 설치하려면,
1 | nvm install v8 --reinstall-packages-from=v8.0.1 |
Default alias 잘 못 된 경우
새로 로그인 혹은 버전 변경시 다음 메시지 출력,
1 | N/A: version "N/A -> N/A" is not yet installed. |
이 경우 가능성은 제거한 버전이 default 로 지정되서 그런듯 하다, 아래의 경우 default가 v8.7 인데 삭제해서 없기 때문이다.
1 | $ nvm ls |
그래서 default 를 설치된 버전으로 변경해서 지정해 주면 위 메시지가 나오지 않는다.
### nodist
Nodist 는 윈도우즈 환경에서 Nvm과 비슷하게 nodejs의 버전을 관리할 수 있다.
- https://github.com/marcelklehr/nodist
- 윈도우즈 인스톨러로 다운로드 가능.
- git 혹은 zip 으로 다운로드 가능.
인스톨러로 설치시
nodist releases 에서 nodist 인스톨러를 다운받아 설치한다.
git으로 설치
윈도우즈 git
으로 clone을 해오고, 윈도우의 환경설정 변수를 설정한다.
1 | C:\>git clone git://github.com/marcelklehr/nodist.git |
이제 cmd
에서 nodist
의 업데이트를 실행해주고 사용한다.
1 | C:\>nodist selfupdate |
기타 다른 환경에서 설치 및 사용법은 nodist 에서 확인한다.
/usr/local/lib
└── configurable-http-proxy@4.5.3
=> If you wish to uninstall them at a later point (or re-install them under your
=> nvm
Nodes), you can remove them from the system Node as follows:
$ nvm use system
$ npm uninstall -g a_module
npm
npm
은 nodejs 패키지 관리자로 선택한 모듈을 설치, 갱신 및 삭제할 수 있고, 스크립팅을 통해 프로세스 관리까지 할 수 있다.
npm init
1 | npm init -y[--yes] |
이렇게 생성된 package.json 은,
1 | { |
npm 으로 추가하는 모듈은 package.json에 의존성을 추가할 수 있다. npm install --save
별도의 플래그를 사용한다. 그리고 --dev
플래그를 주면 developer dependency에 추가해 준다.
save
npm < 5 이하 버전은 -S
혹은 --save
옵션으로 모듈 의존성을 package.json 에 추가한다.
node
를 설치후 npm
을 업그레이드 해준다. npm 자체는 다음 같이 업그레이드 한다.
1 | npm i -g npm |
Outdated module
현재 package.json 에 설치된 버전과 명시된 버전 그리고 최신 버전과 차이를 알 수 있다.
1 | npm outdated |
최신 버전으로 설치를 하려면 package.json을 버전코드로 변경하고 업데이트를 진행한다.
모든 패키지를 업데이트할 수 있다.
1 | npm update |
특정 모듈만 업데이트하려면 패키지를 명시하면 된다.
1 | npm update debug |
npm upgrade
node
를 설치후 npm
을 업그레이드 해준다. npm 자체는 다음 같이 업그레이드 한다.
1 | npm i -g npm |
Outdated module
현재 package.json 에 설치된 버전과 명시된 버전 그리고 최신 버전과 차이를 알 수 있다.
1 | npm outdated |
최신 버전으로 설치를 하려면 package.json을 버전코드로 변경하고 업데이트를 진행한다.
혹은 모든 패키지를 업데이트할 수 있다.
1 | npm update |
npm in
vs. npm up
install 과 update는 package.json 에 명시된 버전에 대응해 실행된다.
- npm install installs all modules that are listed on package.json file and their dependencies.
- npm update updates all packages in the node_modules directory and their dependencies.
- npm install express installs only the express module and its dependencies.
- npm update express updates the express module and its dependencies.
stackoverflow: npm install vs update 에 따르면 버전 관리에 따른 차이를 보인다.
개별 모듈만 업그레이드 하려면 install @latest
같이 사용한다. 다음 같이 npm outdated 로 프로젝트 버전 상태를 확인해 보면
1 | $ npm outdated |
i
명령으로 현재 package.json에 명시된 버전이 설치된다.
1 | $ npm i mongoose |
@latest 제한자로 최신 버전으로 업그레이드 할 수 있다.
1 | $ npm i mongoose@latest |
어쨌든 버전 갱신을 목적으로 하면 npm i
를 일반적으로 써도 무방하다.
Process management
NodeJS / nvm 기반 개발환경 설치
https://blog.thinkbee.kr/2017-04-01-nodejs-install-nvm-dbf81fcc0896/