nvm (Node Version Manager)


Posted by TempuraEngineer on 2023-11-25

目錄


nvm是什麼

nvm(Node Version Manager)是node.js管理工具,它可以讓你在不同專案上使用不同版本的node.js

至於為什麼需要nvm原因大致如下

  • 需要不同版本的node.js
  • 避免全域安裝衍生的問題(ex: 因為某個專案需要,而更新package,卻導致其他用到同個package的專案無法運作)

Why NVM is Tremendously Helpful for Web Developers


安裝nvm與node.js

安裝nvm

安裝有兩個方式,透過cURL或者homebrew,但是官方不建議用homebrew安裝,因為可能出現奇怪的bug

如果不小心裝下去了可以使用以下指令刪除

brew uninstall nvm

// 如果曾經建立過.nvm資料夾給nvm也要順便刪除
rm -rf .nvm

但如果真的要用homebrew安裝,也可以看How to install Node.js using NVM on macOS M1

接著來看看如何用cURL安裝

// 版號會變,建議到github看
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.5/install.sh | bash

安裝完後要重開終端機才會生效,或者下指令source .zshrc也可以

nvm github


安裝node.js

// 安裝node.js 14.21
nvm install 14.21

// 安裝node.js 18
nvm install 18

安裝的過程可能會有點久,成功後會在終端機出現Now using node v14.21.3 (npm v6.14.18)

如果還有出現Creating default alias: default -> 14.21 (-> v14.21.3)代表nvm自動把剛剛安裝的node版本設為default

可以透過以下指令修改default node version

nvm alias default v18.12.0


設定.nvmrc (可不做)

在專案根目錄新增.nvmrc,並貼上想要的node版號

14.21

然後在.zshrc新增設定,記得一定要貼在nvm initialization後面

# 這是原本就有的,nvm initialization設定
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
# This loads nvm
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"
# This loads nvm bash_completion

# 把以下這段貼到nvm initialization後面
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=$(nvm 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

接著打開專案就會自動切換node版本,成功後終端機會出現Now using node v14.21.3 (npm v6.14.18)

如果不想設定也可以手動切換

nvm use 14.21

#node.js #NVM #node version manager #node.js多開







Related Posts

常用的 React Hooks 簡介

常用的 React Hooks 簡介

每週 Exit Tickets - week 1 (submitted)

每週 Exit Tickets - week 1 (submitted)

Windows Terminal 簡單紀錄

Windows Terminal 簡單紀錄


Comments