티스토리 뷰
도입 배경
프로젝트가 많아지다보니 레거시 시스템으로 운영되고 있는 프로젝트도 있고 서로 베이스로 사용하는 Node버전이 달라지게 되었습니다. 개발자마다 프로젝트 내부에서도 사용중인 Node의 버전이 달라지는 이슈를 해결하기 위해 문서화한 가이드입니다. nvm은 Node Version Manager의 약자로써 여러 Node 버전을 설치하고 관리하는 기능을 제공합니다. 이를 활용하여 프로젝트별로 버전을 통일 하는 방법이 있습니다. 쉘 환경 별로 설정하는 방법은 아래와 같습니다.
환경별 설정방법
- zsh
vi .zshrc
vim .zshrc
nano .zshrc
zsh기준으로 세가지 명령어중 하나로 .zshrc파일을 열 수 있습니다.
# place this after nvm initialization!
autoload -U add-zsh-hook
load-nvmrc() {
local nvmrc_path
nvmrc_path="$(nvm_find_nvmrc)"
if [ -n "$nvmrc_path" ]; then
local nvmrc_node_version
nvmrc_node_version=$(nvm version "$(cat "${nvmrc_path}")")
if [ "$nvmrc_node_version" = "N/A" ]; then
nvm install
elif [ "$nvmrc_node_version" != "$(nvm version)" ]; then
nvm use
fi
elif [ -n "$(PWD=$OLDPWD nvm_find_nvmrc)" ] && [ "$(nvm version)" != "$(nvm version default)" ]; then
echo "Reverting to nvm default version"
nvm use default
fi
}
add-zsh-hook chpwd load-nvmrc
load-nvmrc
열고 난후 i를 눌러 입력모드로 진입할 수 있으며 파일의 하단부에 위의 스크립트를 복붙해서 넣습니다.
esc키를 눌러 입력모드에서 벗어날 수 있으며, :wq 명령어를 통해서 저장후 해당 파일에서 나오게 됩니다.
source .zshrc
컴퓨터를 재부팅하지 않고 해당 변경을 적용하기 위해서는 위의 명령어를 입력하면 됩니다.
- bash
vi .bashrc
vim .bashrc
nano .bashrc
세가지 명령어중 하나로 .bashrc파일을 열 수 있습니다.
cdnvm() {
command cd "$@" || return $?
nvm_path=$(nvm_find_up .nvmrc | tr -d '\\n')
# If there are no .nvmrc file, use the default nvm version
if [[ ! $nvm_path = *[^[:space:]]* ]]; then
declare default_version;
default_version=$(nvm version default);
# If there is no default version, set it to `node`
# This will use the latest version on your machine
if [[ $default_version == "N/A" ]]; then
nvm alias default node;
default_version=$(nvm version default);
fi
# If the current version is not the default version, set it to use the default version
if [[ $(nvm current) != "$default_version" ]]; then
nvm use default;
fi
elif [[ -s $nvm_path/.nvmrc && -r $nvm_path/.nvmrc ]]; then
declare nvm_version
nvm_version=$(<"$nvm_path"/.nvmrc)
declare locally_resolved_nvm_version
# `nvm ls` will check all locally-available versions
# If there are multiple matching versions, take the latest one
# Remove the `->` and `*` characters and spaces
# `locally_resolved_nvm_version` will be `N/A` if no local versions are found
locally_resolved_nvm_version=$(nvm ls --no-colors "$nvm_version" | tail -1 | tr -d '\\->*' | tr -d '[:space:]')
# If it is not already installed, install it
# `nvm install` will implicitly use the newly-installed version
if [[ "$locally_resolved_nvm_version" == "N/A" ]]; then
nvm install "$nvm_version";
elif [[ $(nvm current) != "$locally_resolved_nvm_version" ]]; then
nvm use "$nvm_version";
fi
fi
}
alias cd='cdnvm'
cdnvm "$PWD" || exit
열고 난후 i를 눌러 입력모드로 진입할 수 있으며 파일의 하단부에 위의 스크립트를 복붙해서 넣습니다.
esc키를 눌러 입력모드에서 벗어날 수 있으며, :wq 명령어를 통해서 저장후 해당 파일에서 나오게 됩니다.
source .bashrc
컴퓨터를 재부팅하지 않고 해당 변경을 적용하기 위해서는 위의 명령어를 입력하면 됩니다.
설정 후 nvm 관리 방법
프로젝트 별로 .nvmrc를 루트에 두면 위에서 진행한 설정에 따라 터미널에서 해당 프로젝트 폴더에 진입할 때 자동으로 nvm의 명령어들을 실행하게 됩니다. 단 nvm use를 할 수 없는 상황인 경우 nvm install을 먼저 진행하여 설정되어있는 node버전을 설치한 후 nvm use 명령어를 통해 해당 node버전을 사용하게 됩니다.
이러한 설정을 해둠으로써 node의 획일화된 버전관리가 용이해지고 nvm을 좀 더 잘 사용할 수 있는 환경이 구축됩니다.
'프론트엔드' 카테고리의 다른 글
graphql 코드제네레이터 에러 해결 방법 (0) | 2023.02.02 |
---|---|
[CSS] 모바일웹에서 터치 기능 제한하기 (0) | 2023.01.29 |
[Next.js] Middleware사용시 API Routes 이슈 (0) | 2023.01.28 |
데스크탑 앱 만들기를 위한 Javascript FrameWork정리 (0) | 2023.01.08 |
Throttle이란? (0) | 2022.06.20 |
- Total
- Today
- Yesterday
- code-generate
- graphql
- 2022년마무리
- 쓰로틀링
- Next.js
- Electron
- node
- Tauri
- nvm활용법
- 프론트엔드회고
- 존중이필요할때
- touch-action
- 가상키보드
- 회고록
- 모바일웹
- CSS
- Middleware
- Apollo
- JavaScript
- 2022년회고
- 노드버전관리
- Throttle
- 원밀리언
- Matcher
- 프레임워크고민
- WebOS
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |