티스토리 뷰

도입 배경

프로젝트가 많아지다보니 레거시 시스템으로 운영되고 있는 프로젝트도 있고 서로 베이스로 사용하는 Node버전이 달라지게 되었습니다. 개발자마다 프로젝트 내부에서도 사용중인 Node의 버전이 달라지는 이슈를 해결하기 위해 문서화한 가이드입니다. nvm은 Node Version Manager의 약자로써 여러 Node 버전을 설치하고 관리하는 기능을 제공합니다. 이를 활용하여 프로젝트별로 버전을 통일 하는 방법이 있습니다. 쉘 환경 별로 설정하는 방법은 아래와 같습니다.

환경별 설정방법

  • zsh

GitHub - nvm-sh/nvm: Node Version Manager - POSIX-compliant bash script to manage multiple active node.js versions

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

GitHub - nvm-sh/nvm: Node Version Manager - POSIX-compliant bash script to manage multiple active node.js versions

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을 좀 더 잘 사용할 수 있는 환경이 구축됩니다.

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/10   »
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
글 보관함