Mac 安裝 NVM


Posted by SimonAllen on 2020-05-29

很久沒在 Mac 裝 NVM 了,這裡也順便重新整理之前的筆記。

平常在開發前端時,基於 Node.js 生態圈龐大,不同套件有不同版本的限制,例如某些新功能限定某版號以後才有,不同前後端專案可能所需 Node.js 版本也不同,總不可能每次都乖乖升級降級吧!

我們需要一個工具幫我們管理 Node.js 版本,這時候我們就可以透過 nvm 來管理、切換 Node.js。

先檢查目前電腦有沒有安裝 Node.js ,有的話記得先移除掉,之後在 terminal 終端機輸入

curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.35.0/install.sh | bash

wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.35.3/install.sh | bash

擇一即可

檢查是否安裝成功

安裝後在 terminal 終端機輸入

nvm --version

這時應該會發現找不到 nvm,這是正常的,理由是我們還沒設定對應的環境變數。

設定環境變數

接著要按照你 terminal shell 是 bash 或是 zsh 在以下 ~/.bash_profile~/.zshrc~/.profile~/.bashrc 其中一個做對應設定。

通常 bash 對應 .bash_profile.bashrc 檔案,zsh 對應 .zshrc 檔案。

要知道自己是 bash 或 zsh 最簡單方式就是打開 terminal 看看視窗上面寫什麼:

到你的 user 資料夾根目錄,例如我電腦叫 Simon,就到我的 Finder,Simon 這層 user 資料夾,通常這層資料夾對應你打開 terminal 終端機根層級,我們要在裡頭檢查是否有 .bash_profile.zshrc.profile.bashrc 的存在。

Mac 可以在 Finder 資料夾輸入快捷鍵 command + shift + . 顯示隱藏的檔案,若有上述檔案其中一個檔案就用任一編輯器 (VScode、Sumblime) 之類的打開,若沒有就自己新建一個,在裡頭最後面加入以下內容並存檔

export NVM_DIR="$([ -z "${XDG_CONFIG_HOME-}" ] && printf %s "${HOME}/.nvm" || printf %s "${XDG_CONFIG_HOME}/nvm")"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm

完成後打開終端機,按照你剛剛修改的檔案,例如你是 bash 改的是 .bash_profile 那就在終端機輸入

source ~/.bash_profile

如果你改的是 .bashrc 那就在終端機輸入

source ~/.bashrc

如果你 shell 是 zsh 改的是 .zshrc 就在終端機輸入

source ~/.zshrc

這個步驟就是重新啟動我們修改的檔案,讓 shell 運作上面加入的 export NVM_DIR=..... 這段環境變數設定。

若是上網搜尋文章,這步驟教學大多是用終端機指令包含用 vi 加入 export NVM_DIR=..... 這段,但我個人不是很喜歡連修改檔案內容這步驟還在 terminal 終端機上用 vi 完成。

總之到這邊應該就完成了,在 terminal 終端機輸入

nvm --version

應該就能看到對應版號。

nvm 安裝 node.js

查看此台電腦安裝資訊

nvm ls

查看有哪些 Node.js 版號可以安裝

$ nvm ls-remote

安裝指定 Node.js 版號

nvm install ${版本號碼}

例如:

nvm install 12.13

切換指定 Node.js 版號

nvm use ${版本號碼}

例如:

nvm use 12.13

設定此台電腦預設的 Node.js 版號

nvm alias default ${版本號碼}

例如:

nvm alias default 12.13

記得先 nvm install 安裝該版本到電腦後才用 nvm usenvm alias default 做後續設定

參考

NVM Github 有很詳盡說明..
https://github.com/nvm-sh/nvm


#node.js #NVM #開發環境







Related Posts

介紹Promise和Async/Await

介紹Promise和Async/Await

Go Web 程式設計入門教學:語法基礎之變數(variable)和資料型別(type)篇

Go Web 程式設計入門教學:語法基礎之變數(variable)和資料型別(type)篇

Python Table Manners - 測試 (二)

Python Table Manners - 測試 (二)


Comments