iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 7
2

在開發時,基於 Node 所開發的軟體越來越多,而有些軟體會因為每個用戶所安裝的 Node 版本不同造成無法正常被執行的情況,這時候我們就可以透過 nvm 來管理與版本切換。

nvm 安裝

可以用 curl 來安裝,在終端機輸入:

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

加入環境變量:將這兩行加到檔案最後面。

export NVM_DIR="${XDG_CONFIG_HOME/:-$HOME/.}nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion

完成後输入這一行,並重新開啟:

source ~/.zshrc

最後可以用這行確認是否安裝成功:

command -v nvm

用 nvm 裝 node

輸入這一行可以看到所有可以提供安裝的 npm 版本:

$ nvm ls-remote

要安裝 npm 時直接輸入下面這一行,version 的部分就填入版本就可以直接安裝,例如:v9.11.2

$ nvm install <version>

安裝完成後可以透過這一行來檢視目前可以使用的版本:

$ nvm ls

https://ithelp.ithome.com.tw/upload/images/20181102/20111449otOChQ9PWx.png

用 nvm 切換版本

要切換版本相當簡單
只要使用這一行就可以快速切換版本

$ nvm use <version>

成功切換就會顯示如下圖
https://ithelp.ithome.com.tw/upload/images/20181102/20111449BzjjXoIN6J.png

比較偷懶一點,也可以不輸入 v 以及完整的詳細版本號,例如:

$ nvm use 9.11

仍然可以成功讀取
https://ithelp.ithome.com.tw/upload/images/20181102/20111449jdWN3o4ZzZ.png

確認目前使用的版本號:

$ nvm use node

如果覺得版本號實在太難記得,又不想每次都先查看安裝可被使用的有哪些,也可以自己為已經安裝的版本號取名,讓下次要切換時,只要輸入名字就可以了。

$ nvm alias <Name> <version>

例如:

$ nvm alias stable-version 9.11.2

就可以直接使用這個名字來做切換:
https://ithelp.ithome.com.tw/upload/images/20181102/20111449mOiI7JJDjx.png

使用要注意.....

從剛剛的 nvm ls 指令可以看出來 node 是有預設的使用版本,因此在使用時要特別注意,使用 nvm use 是僅限於在當前的 shell 才有被切換,如果重新開啟檔案或是開了新的 shell 或是窗,就會回到預設的版本號,而非 nvm use 所使用的了。
如果要更換預設的版本,可以輸入下面這一行來設定預設的版本:

$ nvm alias default <version>

小結

nvm 指令小整理

指令 功能
command -v nvm 檢查 nvm 是否安裝成功,如果是會輸出 nvm
nvm ls-remote 查看目前可安裝版本
nvm ls-remote 篩選特定版本
nvm install 安裝特定版本
nvm ls 查看本地目前安裝的版本
nvm use 切換版本,但切換視窗會回到預設版本
nvm alias default 更改預設版本

透過 nvm 就可以快速切換 Node 版本,對於管理多個文件或專案的開發者來說,真的是非常適合來拿管理版本的工具呢!

這邊可以參考完整的文件: https://github.com/creationix/nvm


上一篇
Yarn - 解決 npm 痛點
下一篇
Hexo - 前端也能建置部落格!安裝與建置篇
系列文
前端工具百寶箱 - 六角學院30

1 則留言

0
kkdayy_55330
iT邦新手 5 級 ‧ 2019-06-17 16:56:17

您好,請問如何加入環境變量?

加入環境變量:將這兩行加到檔案最後面。

export NVM_DIR="${XDG_CONFIG_HOME/:-$HOME/.}nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion

我要留言

立即登入留言