서론
현재 회사에서 진행하는 프로젝트와 개인적으로 진행하는 사이드 프로젝트는 제각각 Node 버전이 다르다. 회사에서 여러 개의 프로젝트를 같이 진행하고 있다.
(1) node 16.16.0 (backend - node express / frontend - react + vitejs)
(2) node 14.17.5 (backend - go echo / front - react + webpack)
(3) node 16.15.0 (backend - not yet / front - svelte+ vitejs)
본론
별도의 VM을 통해 관리하면 모를까, 하나의 서버에서 프로젝트별로 node 버전 적용해서 개발하기란 쉽지 않았다. Visual Studio Code 서버를 띄워 모든 개발을 거기서 하므로 더욱이 불편했다.
위 링크와 같이 NVM(Node Version Manager), n(Node Version Management)을 사용해서 변경해주는 것 또한 한두 번이지 프로젝트가 많아질수록 귀찮아졌다.
그 와중에 서칭하던 중 Python의 virtualenv같이 Node 또한 env 별로 관리해주는 툴을 발견하게 되었다.
패키지 이름은 nodeenv로 python이 설치되어있어야한다.
최신 리눅스 운영체제에는 python 3 버전이 설치되어 있기 때문에 pip3를 설치하고 진행하면 된다.
nodeenv 설치
root@e072cbd36d4b:~/workspace# pip install nodeenv
Collecting nodeenv
Downloading nodeenv-1.7.0-py2.py3-none-any.whl (21 kB)
Requirement already satisfied: setuptools in /usr/lib/python3/dist-packages (from nodeenv) (45.2.0)
Installing collected packages: nodeenv
Successfully installed nodeenv-1.7.0
사용방법
// node, npm 버전 설정
nodeenv --node={node_version} --npm={npm_version} {env-filename}
// node만 버전 설정
nodeenv --node={node_version} {env-filename}
env 생성
root@e072cbd36d4b:~/workspace# nodeenv --node=16.16.0 env-16.16.0
* Install prebuilt node (16.16.0) ..... done.
root@e072cbd36d4b:~/workspace# nodeenv --node=14.17.5 env-14.17.5
* Install prebuilt node (14.17.5) ..... done.
root@e072cbd36d4b:~/workspace# ls
animalinfo env-14.17.5 env-16.16.0 mint-chocolate
root@e072cbd36d4b:~/workspace#
env 적용
root@e072cbd36d4b:~/workspace# ls
animalinfo env-14.17.5 env-16.16.0 mint-chocolate
root@e072cbd36d4b:~/workspace# source env-16.16.0/bin/activate
(env-16.16.0) root@e072cbd36d4b:~/workspace# node -v
v16.16.0
(env-16.16.0) root@e072cbd36d4b:~/workspace# deactivate_node
root@e072cbd36d4b:~/workspace#
root@e072cbd36d4b:~/workspace# source env-14.17.5/bin/activate
(env-14.17.5) root@e072cbd36d4b:~/workspace# node -v
v14.17.5
(env-14.17.5) root@e072cbd36d4b:~/workspace# deactivate_node
root@e072cbd36d4b:~/workspace#
마치며
이로써 더욱 쾌적한 개발 환경이 구성되었다 :) !
회사에서 개발하고, 집에서 쉴 때도 개발하고... 취미가 뭐냐고 물으면 "개발...!" 이라고 하게 된다.