Node.js 개발을 할 때, 프로젝트마다 요구하는 Node.js 버전이 다를 수 있다. 이럴 때 .nvmrc
파일이 유용하다. 이 글에서는 .nvmrc
파일을 사용해 워크스페이스마다 다른 버전의 Node.js를 사용하는 방법을 소개한다.
NVM 설치
먼저, NVM(Node Version Manager)을 설치해야 한다. NVM은 여러 버전의 Node.js를 쉽게 관리할 수 있게 해주는 도구로서 터미널에 다음 명령어를 입력해 NVM을 설치할 수 있다.
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.0/install.sh | bash
참고: https://github.com/nvm-sh/nvm?tab=readme-ov-file#installing-and-updating
설치가 완료되면, 다음 명령어를 입력해 NVM이 제대로 설치되었는지 확인한다.
command -v nvm
이 명령어를 입력했을 때 nvm
이 출력되면 설치가 성공한 것이다.
Node.js 버전 설치
NVM을 설치한 후, 필요한 Node.js 버전을 설치할 수 있다. 예를 들어, Node.js 버전 20를 설치하려면 다음 명령어를 입력한다.
nvm install 20
이와 같은 방식으로 필요한 모든 버전의 Node.js를 설치한다.
.nvmrc 파일 생성
각 워크스페이스 디렉터리에서 사용할 Node.js 버전을 지정하기 위해 .nvmrc
파일을 생성한다. .nvmrc
파일은 해당 디렉터리에서 사용할 Node.js 버전을 명시한다.
echo "v20.15.0" > .nvmrc
이 명령어는 현재 디렉터리에서 Node.js 버전 20.15.0을 사용하도록 지정한다. 필요에 따라 다른 버전을 지정할 수도 있다.
.nvmrc 파일 사용
각 워크스페이스 디렉터리에 .nvmrc
파일을 생성했다면, 해당 디렉터리로 이동할 때마다 자동으로 지정된 Node.js 버전을 사용하도록 설정할 수 있다.
nvm use
이 명령어를 입력하면, 현재 디렉터리의 .nvmrc
파일에 명시된 Node.js 버전이 활성화된다. 매번 수동으로 nvm use
명령어를 입력하는 것이 번거로울 수 있는데, 이를 자동화하기 위해 쉘 프로필 파일에 아래 내용을 추가하여 자동화 할 수 있다.
# .bashrc 또는 .zshrc에 추가
autoload -U add-zsh-hook
load-nvmrc() {
local node_version="$(nvm version)"
local nvmrc_path="$(nvm_find_nvmrc)"
if [ -n "$nvmrc_path" ]; then
local nvmrc_node_version=$(cat "${nvmrc_path}")
if [ "$nvmrc_node_version" = "N/A" ]; then
nvm install
elif [ "$nvmrc_node_version" != "$node_version" ]; then
nvm use
fi
elif [ "$node_version" != "$(nvm version default)" ]; then
echo "Reverting to nvm default version"
nvm use default
fi
}
add-zsh-hook chpwd load-nvmrc
load-nvmrc
이렇게 설정하면, 디렉터리를 이동할 때마다 자동으로 .nvmrc
파일에 지정된 Node.js 버전이 활성화된다.
# 출력 예시
Found '디렉터리경로/.nvmrc' with version <v20.15.0>
Now using node v20.15.0 (npm v10.8.1)
마무리
.nvmrc
파일을 활용하면, 각 프로젝트에서 요구하는 Node.js 버전을 쉽게 관리할 수 있다. 이를 통해 개발 환경을 일관되게 유지하고, 버전 충돌 문제를 방지할 수 있다.
'Programming > Node.js' 카테고리의 다른 글
Node.js의 성능을 극대화 하기위한 블로킹 작업 피하기 (1) | 2024.12.21 |
---|---|
Node.js는 왜 싱글 스레드인가? (1) | 2024.12.21 |
Node.js의 Event Loop (0) | 2024.05.27 |
Node.js의 동기와 비동기 (0) | 2023.05.14 |