프로젝트별 node 버전 자동설정

Rony·2023년 6월 24일
0
post-thumbnail

하나의 프로젝트만 사용하는경우에는 문제가 없지만 여러 프로젝트를 사용하는데 프로젝트별로 node 버전이 다른경우 실행할때마다 버전을 잡아줘야 하고 다른버전으로 npm install 이라도 하는경우에는 실행시 문제가 겪는등의 귀찮은 일에 휘말리게 된다.

그러므로 프로젝트를 띄울때 알아서 해당 노드 버전이 셋팅되는게 가장 좋으므로 관련설정 방법을 기재한다.

( 로컬 실행에서의 설정이므로 참고바랍니다. )

해당 내용은 이미 nvm 이 설치되어있다는 전제로 한다.

mac 에서 확인한 내용이라 window 에서는 어떻게 하는지 잘…… ㅡ.,ㅡ ;

  1. .nvmrc 파일 생성

    프로젝트 루트 파일에 .nvmrc 파일을 생성한다.

    해당파일에 사용할 node 버전을 적어준다.

    v18.12.1
  2. 사용하고 있는 os 의 터미널에 다음을 셋팅한다.

https://github.com/nvm-sh/nvm#deeper-shell-integration

먼저 본인의 프로젝트가 어떤 환경으로 로컬실행되는지 확인 후 아래의 설정을 업데이트 해준다.

bash 를 사용하는경우

터미널에서 vi ~/.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'
    cd "$PWD"

zsh 를 사용하는경우

터미널에서 vi ~/.zshrc 명령어를 실행하여 zsh 설정 파일을 열어주고 하단에 아래의 내용을 입력 후 저장한다.

# place this after nvm initialization!
autoload -U add-zsh-hook
load-nvmrc() {
  local nvmrc_path="$(nvm_find_nvmrc)"

  if [ -n "$nvmrc_path" ]; then
    local 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

프로젝트 실행시 .nvmrc 에 설정한 버전으로 node 버전이 제대로 잡혀있는지 확인한다.

끗.

profile
sang kwon seo

0개의 댓글