簡介
關於
安裝和更新
附加說明
Linux 上的故障排除
macOS 上的故障排除
安西布爾
安裝和更新腳本
驗證安裝
重要提示
git安裝
手動安裝
手動升級
用法
在帶有.nvmrc
檔案的目錄中自動呼叫nvm use
巴什
桀騁
魚
將授權標頭傳遞給鏡像
保留自訂顏色
抑制彩色輸出
長期支持
安裝時遷移全域包
安裝時文件中的預設全域包
io.js
節點系統版本
列出版本
設定自訂顏色
恢復路徑
設定預設節點版本
使用節點二進位檔案的鏡像
.nvmrc
更深入的 Shell 集成
運行測試
環境變數
重擊完成
用法
相容性問題
在 Alpine Linux 上安裝 nvm
阿爾派 Linux 3.13+
高山 Linux 3.5 - 3.12
解除安裝/刪除
手動解除安裝
Docker 開發環境
問題
macOS 故障排除
WSL 故障排除
維護者
專案支援
企業支持
執照
版權聲明
nvm
可讓您透過命令列快速安裝和使用不同版本的node。
例子:
$ nvm 使用 16 現在使用節點 v16.9.1 (npm v7.21.1) $ 節點-v v16.9.1 $ nvm 使用 14 現在使用節點 v14.18.0 (npm v6.14.15) $ 節點-v v14.18.0 $ nvm 安裝 12 現在使用節點 v12.22.6 (npm v6.14.5) $ 節點-v v12.22.6
就這麼簡單!
nvm 是 Node.js 的版本管理器,設計為依使用者安裝並按 shell 呼叫。 nvm
可在任何與 POSIX 相容的 shell(sh、dash、ksh、zsh、bash)上運行,特別是在以下平台上:unix、macOS 和 windows WSL。
要安裝或更新nvm,您應該運行安裝腳本。為此,您可以手動下載並執行腳本,或使用以下 cURL 或 Wget 命令:
捲曲 -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.1/install.sh |巴什
wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.1/install.sh |巴什
執行上述任一命令都會下載腳本並執行它。該腳本將 nvm 儲存庫克隆到~/.nvm
,並嘗試將下面程式碼片段中的來源行新增至正確的設定檔( ~/.bash_profile
、 ~/.zshrc
、 ~/.profile
或~/.bashrc
) 。
導出 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" # 這會載入 nvm
如果環境變數$XDG_CONFIG_HOME
存在,它將把nvm
檔案放置在那裡。
您可以將--no-use
新增至上述腳本的末端(... nvm.sh --no-use
)以延遲使用nvm
,直到您手動use
它。
您可以使用NVM_SOURCE
、 NVM_DIR
、 PROFILE
和NODE_VERSION
變數自訂安裝來源、目錄、設定檔和版本。例如: curl ... | NVM_DIR="path/to/nvm"
。確保NVM_DIR
不包含尾部斜線。
安裝程式可以使用git
、 curl
或wget
下載nvm
(以可用者為準)。
您可以透過在執行install.sh
腳本之前設定PROFILE=/dev/null
來指示安裝程式不要編輯您的 shell 配置(例如,如果您已經透過 zsh nvm 插件完成)。以下是一個範例單行指令: PROFILE=/dev/null bash -c 'curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.1/install.sh | bash'
在 Linux 上,運行安裝腳本後,如果您收到nvm: command not found
或在鍵入command -v nvm
後看不到來自終端的任何反饋,只需關閉當前終端,打開一個新終端,然後再次嘗試驗證即可。或者,您可以在命令列上針對不同的 shell 執行以下命令:
bash : source ~/.bashrc
zsh : source ~/.zshrc
克什: . ~/.profile
這些應該會使用nvm
指令。
從OS X 10.9開始,Xcode命令列工具預設了/usr/bin/git
,這表示我們無法正確偵測Git是否已安裝。在執行安裝腳本之前,您需要手動安裝Xcode命令列工具,否則會失敗。 (參見#1782)
如果執行安裝腳本後收到nvm: command not found
,原因可能是以下其中之一:
從 macOS 10.15 開始,預設 shell 是zsh
,nvm 會尋找.zshrc
進行更新,預設不會安裝。使用touch ~/.zshrc
建立一個並再次執行安裝腳本。
如果您使用 bash(先前的預設 shell),您的系統可能沒有設定命令的.bash_profile
或.bashrc
檔案。使用touch ~/.bash_profile
或touch ~/.bashrc
建立其中之一,然後再次執行安裝腳本。然後,運行. ~/.bash_profile
或. ~/.bashrc
以取得nvm
指令。
您以前使用過bash
,但安裝了zsh
。您需要手動將這些行新增至~/.zshrc
並運行. ~/.zshrc
。
您可能需要重新啟動終端執行個體或執行. ~/.nvm/nvm.sh
。重新啟動終端/開啟新選項卡/窗口,或執行 source 命令將載入命令和新配置。
如果上述方法沒有幫助,您可能需要重新啟動終端執行個體。嘗試在終端機中開啟一個新選項卡/視窗並重試。
如果上述方法無法解決問題,您可以嘗試以下操作:
如果您使用 bash,則可能是您的.bash_profile
(或~/.profile
)沒有正確取得~/.bashrc
。您可以透過新增source ~/<your_profile_file>
或按照下面的下一步操作來解決此問題。
嘗試將安裝部分中的片段新增至您常用的設定檔( ~/.bash_profile
、 ~/.zshrc
、 ~/.profile
或~/.bashrc
)中,該片段會找到正確的 nvm 目錄並將 nvm 載入。
有關此問題和可能的解決方法的更多信息,請參閱此處
注意配備 Apple Silicon 晶片的 Mac,node 自 v16.0.0 起開始提供arm64 arch Darwin 軟體包,並自 v14.17.0 起從原始碼編譯時提供實驗性的arm64支援。如果您在使用nvm
安裝節點時遇到問題,您可能需要更新至這些版本之一或更高版本。
您可以使用任務:
-名稱:安裝nvm ansible.builtin.shell:>curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.1/install.sh | bash 參數:建立:“{{ ansible_env.HOME }}/.nvm/nvm.sh”
若要驗證 nvm 是否已安裝,請執行下列操作:
命令-v nvm
如果安裝成功,應該輸出nvm
。請注意, which nvm
不起作用,因為nvm
是一個來源 shell 函數,而不是可執行二進位。
注意:在 Linux 上,執行安裝腳本後,如果您收到nvm: command not found
或在鍵入command -v nvm
後看不到來自終端的任何回饋,只需關閉當前終端,打開一個新終端,然後再次嘗試驗證即可。
如果您正在執行的系統沒有可用的預先包裝二進位文件,這表示您要從其原始程式碼安裝 Node 或 io.js,則需要確保您的系統具有 C++ 編譯器。對於 OS X,Xcode 可以工作,對於基於 Debian/Ubuntu 的 GNU/Linux, build-essential
和libssl-dev
軟體包可以工作。
注意: nvm
在某些情況下也支援 Windows。它應該透過 WSL(適用於 Linux 的 Windows 子系統)運行,具體取決於 WSL 的版本。它也應該與 GitBash (MSYS) 或 Cygwin 一起使用。否則,對於 Windows,存在一些替代方案,我們既不支援也不開發:
nvm-windows
節點主義者
內華達
注意: nvm
也不支援 Fish(參見#303)。存在替代方案,但我們既不支援也不開發:
bass 允許您在 Fish shell 中使用為 Bash 編寫的實用程式
fast-nvm-fish 僅適用於版本號碼(不適用於別名),但不會顯著減慢您的 shell 啟動速度
Oh My Fish 的 plugin-nvm 插件,使 nvm 及其補全在 Fish shell 中可用
fnm - 基於漁夫的 Fish 版本管理器
fish-nvm - 魚的 nvm 包裝器,延遲採購 nvm 直到實際使用。
注意:我們在 FreeBSD 方面仍然存在一些問題,因為 FreeBSD 沒有官方的預先建置二進位文件,並且從原始程式碼建置可能需要補丁;請參閱問題票:
[#900] [Bug] FreeBSD 上的節點可能需要修補
Node.js/節點#3716
注意:在 OS X 上,如果您沒有安裝 Xcode 且不想下載 ~4.3GB 文件,您可以安裝Command Line Tools
。您可以查看這篇部落格文章,了解如何做到這一點:
如何在 OS X Mavericks 和 Yosemite 中安裝命令列工具(無需 Xcode)
注意:在 OS X 上,如果您已經安裝了「系統」節點並且想要全域安裝模組,請記住:
使用nvm
時,不需要sudo
使用npm -g
全域安裝模組,因此不要執行sudo npm install -g grunt
,而是執行npm install -g grunt
如果您有~/.npmrc
文件,請確保它不包含任何prefix
設定(與nvm
不相容)
您可以(但不應該?)保留先前的「系統」節點安裝,但nvm
只能用於您的使用者帳戶(用於安裝 nvm 的帳戶)。這可能會導致版本不匹配,因為其他使用者將使用/usr/local/lib/node_modules/*
~/.nvm/versions/node/vX.XX/lib/node_modules/*
不支援自製安裝。如果您對自製安裝的nvm
有問題,請在提交問題之前, brew uninstall
並按照以下說明進行安裝。
注意:如果您使用zsh
您可以輕鬆地將nvm
安裝為 zsh 外掛程式。安裝zsh-nvm
並執行nvm upgrade
進行升級。
注意: v1.7 之前的 Git 版本可能會面臨透過 https 協定從 GitHub 複製nvm
來源的問題,v1.6 之前的 git 也有不同的行為,v1.17.10 之前的 git 無法複製標籤,所以最低所需的git版本是v1.7.10。如果您對我們這裡提到的問題感興趣,請參閱 GitHub 的 HTTPS 克隆錯誤文章。
如果您安裝了git
(需要 git v1.7.10+):
將此儲存庫複製到您的使用者設定檔的根目錄中
從任何地方cd ~/
然後git clone https://github.com/nvm-sh/nvm.git .nvm
cd ~/.nvm
並使用git checkout v0.40.1
查看最新版本
透過從 shell 取得nvm
來啟動它: . ./nvm.sh
現在將這些行新增至您的~/.bashrc
、 ~/.profile
或~/.zshrc
檔案中,以便在登入時自動取得它:(您可能需要新增到以上多個檔案)
導出 NVM_DIR="$HOME/.nvm"[ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh" # 這會載入 nvm[ -s "$NVM_DIR/bash_completion" ] && . "$NVM_DIR/bash_completion" # 這會載入 nvm bash_completion
對於完全手動安裝,請執行以下行,首先將nvm
儲存庫克隆到$HOME/.nvm
中,然後載入nvm
:
導出 NVM_DIR="$HOME/.nvm" && ( git 克隆 https://github.com/nvm-sh/nvm.git "$NVM_DIR" cd "$NVM_DIR" git checkout `git describe --abbrev=0 --tags --match "v[0-9]*" $(git rev-list --tags --max-count=1)`) && . “$NVM_DIR/nvm.sh”
現在將這些行新增至您的~/.bashrc
、 ~/.profile
或~/.zshrc
檔案中,以便在登入時自動取得它:(您可能需要新增到以上多個檔案)
導出 NVM_DIR="$HOME/.nvm"[ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh" # 這會載入 nvm[ -s "$NVM_DIR/bash_completion" ] && . "$NVM_DIR/bash_completion" # 這會載入 nvm bash_completion
對於使用git
手動升級(需要 git v1.7.10+):
更改為$NVM_DIR
下拉最新的更改
查看最新版本
啟動新版本
(cd“$NVM_DIR” git fetch --標籤原點 git checkout `git describe --abbrev=0 --tags --match "v[0-9]*" $(git rev-list --tags --max-count=1)`) && . “$NVM_DIR/nvm.sh”
若要下載、編譯和安裝最新版本的節點,請執行下列操作:
nvm install node #“node”是最新版本的別名
要安裝特定版本的節點:
nvm install 14.7.0 # 或 16.3.0、12.22.1 等
設定別名:
nvm 別名 my_alias v14.4.0
確保您的別名不包含任何空格或斜線。
安裝的第一個版本將成為預設版本。新的 shell 將以預設版本的節點啟動(例如, nvm alias default
)。
您可以使用ls-remote
列出可用版本:
nvm ls 遠端
然後在任何新 shell 中只需使用已安裝的版本:
nvm使用節點
或者你可以直接運行它:
nvm 運行節點 --version
或者,您可以使用所需版本的節點在子 shell 中執行任意命令:
nvm exec 4.2 節點 --version
您也可以獲得可執行檔的安裝路徑:
nvm 12.22
您可以使用下列特殊預設別名來取代「14.7」或「16.3」或「12.22.1」等版本指標: nvm install
、 nvm use
、 nvm run
、 nvm exec
、 nvm which
等:
node
:這將安裝最新版本的node
iojs
:這會安裝最新版本的io.js
stable
:此別名已棄用,僅真正適用於node
v0.12
及更早版本。目前,這是node
的別名。
unstable
:此別名指向node
v0.11
- 最後一個「不穩定」節點版本,自 1.0 之後,所有節點版本都是穩定的。 (在 SemVer 中,版本傳達的是破壞性,而不是穩定性)。
節點有長期lts/argon
lts/*
LTS) .nvmrc
。 。此外,以下命令支援 LTS 參數:
nvm install --lts
/ nvm install --lts=argon
/ nvm install 'lts/*'
/ nvm install lts/argon
nvm uninstall --lts
/ nvm uninstall --lts=argon
/ nvm uninstall 'lts/*'
/ nvm uninstall lts/argon
nvm use --lts
/ nvm use --lts=argon
/ nvm use 'lts/*'
/ nvm use lts/argon
nvm exec --lts
/ nvm exec --lts=argon
/ nvm exec 'lts/*'
/ nvm exec lts/argon
nvm run --lts
/ nvm run --lts=argon
/ nvm run 'lts/*'
/ nvm run lts/argon
nvm ls-remote --lts
/ nvm ls-remote --lts=argon
nvm ls-remote 'lts/*'
/ nvm ls-remote lts/argon
nvm version-remote --lts
/ nvm version-remote --lts=argon
/ nvm version-remote 'lts/*'
/ nvm version-remote lts/argon
每當您的nvm
本機副本連接到 https://nodejs.org 時,它都會為所有可用的 LTS 線路重新建立適當的本機別名。這些別名(儲存在$NVM_DIR/alias/lts
下)由nvm
管理,您不應修改、刪除或建立這些檔案 - 預計您的變更將被撤消,並預計幹預這些檔案可能會導致錯誤不被支援。
若要取得最新的 LTS 版本的節點並遷移現有已安裝的軟體包,請使用
nvm install --reinstall-packages-from=current 'lts/*'
如果您想安裝新版本的 Node.js 並從先前的版本遷移 npm 套件:
nvm install --reinstall-packages-from=node 節點
這將首先使用“nvm version node”來識別您要從中遷移包的當前版本。然後它解析要從遠端伺服器安裝的新版本並安裝它。最後,它運行“nvm reinstall-packages”將 npm 軟體包從先前版本的 Node 重新安裝到新版本。
您也可以從特定版本的 Node 安裝和遷移 npm 套件,如下所示:
nvm install --reinstall-packages-from=5 6 nvm install --reinstall-packages-from=iojs v4.2
請注意,明確重新安裝軟體包不會更新 npm 版本- 這是為了確保 npm 不會意外升級到新節點版本的損壞版本。
若要同時更新 npm,請新增--latest-npm
標誌,如下所示:
nvm install --reinstall-packages-from=default --latest-npm 'lts/*'
或者,您可以隨時執行下列命令來取得目前節點版本上最新支援的 npm 版本:
nvm 安裝最新 npm
如果您已經收到「npm 不支援 Node.js」的錯誤,則需要 (1) 還原到先前的 Node 版本( nvm ls
& nvm use <your latest _working_ version from the ls>
),(2)刪除新建立的節點版本( nvm uninstall <your _broken_ version of node from the ls>
),然後(3)使用--latest-npm
標誌重新執行nvm install
。
如果您在每次安裝新版本時都有想要安裝的預設軟體包列表,我們也支持這一點 - 只需將軟體包名稱(每行一個)添加到檔案$NVM_DIR/default-packages
中即可。您可以在命令列上新增 npm 接受的任何內容作為套件參數。
# $NVM_DIR/default-packagesrimraf 物件檢查@1.0.2 史蒂夫毛/左墊
如果你想安裝 io.js:
nvm安裝iojs
如果您想安裝新版本的 io.js 並從先前的版本遷移 npm 套件:
nvm install --reinstall-packages-from=iojs iojs
在 Node 中遷移 npm 套件所提到的相同指南也適用於 io.js。
如果你想使用系統安裝版本的node,你可以使用特殊的預設別名「system」:
nvm使用系統 nvm運行系統--版本
如果您想查看安裝的版本:
非揮發性LS
如果您想查看可以安裝哪些版本:
nvm ls 遠端
您可以設定五種顏色用於顯示版本和別名資訊。這些顏色會取代預設顏色。初始顏色為:gbyre
顏色代碼:
r/R = red / bold red g/G = green / bold green b/B = blue / bold blue c/C = cyan / bold cyan m/M = magenta / bold magenta y/Y = yellow / bold yellow k/K = black / bold black e/W = light grey / white
nvm 設定顏色 rgBcm
如果您希望自訂顏色在終止 shell 後保留,請在 shell 設定檔中匯出NVM_COLORS
變數。例如,如果您想使用青色、洋紅色、綠色、粗紅色和粗黃色,請新增以下行:
導出 NVM_COLORS='cmgRY'
nvm help (or -h or --help)
、 nvm ls
、 nvm ls-remote
和nvm alias
通常會產生彩色輸出。您可以使用--no-colors
選項來停用顏色(或透過設定環境變數TERM=dumb
):
nvm ls --無顏色 nvm幫助--無顏色 術語=啞nvm ls
要恢復您的 PATH,您可以停用它:
nvm 停用
若要設定在任何新 shell 中使用的預設 Node 版本,請使用別名「default」:
nvm alias default node # 這是指最新安裝的node版本nvm alias default 18 # 這是指最新安裝的v18.x版本的nodenvm alias default 18.12 # 這是指最新安裝的v18.12.x版本的node
若要使用節點二進位檔案的鏡像,請設定$NVM_NODEJS_ORG_MIRROR
:
匯出 NVM_NODEJS_ORG_MIRROR=https://nodejs.org/dist nvm安裝節點 NVM_NODEJS_ORG_MIRROR=https://nodejs.org/dist nvm 安裝 4.2
若要使用 io.js 二進位檔案的鏡像,請設定$NVM_IOJS_ORG_MIRROR
:
匯出 NVM_IOJS_ORG_MIRROR=https://iojs.org/dist nvm安裝iojs-v1.0.3 NVM_IOJS_ORG_MIRROR=https://iojs.org/dist nvm 安裝 iojs-v1.0.3
預設情況下, nvm use
不會建立「目前」符號連結。將$NVM_SYMLINK_CURRENT
設為「true」以啟用此行為,這有時對 IDE 很有用。請注意,在啟用此環境變數的情況下在多個 shell 標籤中使用nvm
可能會導致競爭條件。
若要將授權標頭傳遞到鏡像 URL,請設定$NVM_AUTH_HEADER
NVM_AUTH_HEADER="承載秘密令牌" nvm 安裝節點
您可以在專案根目錄(或任何父目錄)中建立一個包含節點版本號(或nvm
理解的任何其他字串;有關詳細信息,請參閱nvm --help
) .nvmrc
檔案。之後, nvm use
、 nvm install
、 nvm exec
、 nvm run
和nvm which
將使用.nvmrc
檔案中指定的版本(如果命令列上未提供版本)。
例如,要讓 nvm 預設為目前目錄的最新 5.9 版本、最新 LTS 版本或最新節點版本:
$迴聲“5.9”> .nvmrc $ echo "lts/*" > .nvmrc # 預設為最新的 LTS 版本$ echo "node" > .nvmrc # 預設為最新版本
[注意,這些範例假定echo
是符合 POSIX 標準的 shell 版本。如果您使用 Windows cmd
開發環境,例如.nvmrc
檔案用於設定遠端 Linux 部署,那麼請記住, "
」將被複製,從而導致無效檔案。 ] 請將其刪除。
然後當你運行 nvm 時使用:
$ nvm 使用 找到版本 <5.9> 的“/path/to/project/.nvmrc”,現在使用節點 v5.9.1 (npm v3.7.3)
執行 nvm install 也會切換到正確的版本,但如果尚未安裝正確的節點版本,它會為您安裝。
$ nvm 安裝 找到版本 <5.9> 的「/path/to/project/.nvmrc」正在下載並安裝節點 v5.9.1... 正在下載https://nodejs.org/dist/v5.9.1/node-v5.9.1-linux-x64.tar.xz...################## ## ######################################################### #### ############### 100.0%用sha256sum計算校驗和 校驗與匹配!
nvm use
等。等人。將從目前目錄向上遍歷目錄結構尋找.nvmrc
檔案。換句話說,運行nvm use
et 。等人。在具有.nvmrc
的目錄的任何子目錄中都會導致使用該.nvmrc
。
.nvmrc
檔案的內容必須恰好包含一個<version>
(如nvm --help
所描述),後面接著換行符號。 .nvmrc
檔案也可能有註解。註解分隔符號是#
,它及其後面的任何文本,以及空行、前導和尾隨空格,在解析時都將被忽略。
使用=
鍵/值對也被允許和忽略,但保留供將來使用,並且可能會在將來導致驗證錯誤。
運行npx nvmrc
以驗證.nvmrc
檔。如果該工具的結果與 nvm 不一致,則其中一個工具有錯誤 - 請提出問題。
您可以使用avn
深度整合到 shell 中,並在變更目錄時自動呼叫nvm
。 nvm
維護者不支援avn
。請向avn
團隊回報問題。
您也可以使用nvshim
填充node
、 npm
和npx
bin,以自動使用目前目錄中的nvm
配置。 nvshim
不受nvm
維護者支援。請向nvshim
團隊回報問題。
如果您喜歡輕量級的解決方案,以下食譜是由nvm
用戶貢獻的。它們不受nvm
維護者的支援。然而,我們正在接受更多範例的拉取請求。
.nvmrc
檔案的目錄中自動呼叫nvm use
在您的設定檔( ~/.bash_profile
、 ~/.zshrc
、 ~/.profile
或~/.bashrc
)中,每當您進入新目錄時,請將下列內容新增至nvm use
:
將以下內容放在$HOME/.bashrc
的最後:
cdnvm() { 指令 cd "$@" ||返回 $? nvm_path="$(nvm_find_up .nvmrc | command tr -d 'n')" # 如果沒有 .nvmrc 文件,則使用預設的 nvm 版本 if [[ ! $nvm_path = *[^[:空格:]]* ]];然後聲明default_version default_version="$(nvm version default)" # 如果沒有預設版本,請將其設為 `node` # 這將使用您電腦上的最新版本 if [ $default_version = 'N/A' ];然後 nvm 別名預設節點 default_version=$(nvm version default) fi # 如果目前版本不是預設版本,則設定為使用預設版本 if [ "$(nvm current)" != "${default_version}" ];然後 nvm 使用預設 fi elif [[ -s "${nvm_path}/.nvmrc" && -r "${nvm_path}/.nvmrc" ]];然後聲明nvm_version nvm_version=$(<"${nvm_path}"/.nvmrc) 宣告 local_resolved_nvm_version # `nvm ls` 會檢查所有本機可用的版本 # 如果有多個符合版本,則取最新的版本 # 刪除 `->` 和 ` *` 字元和空格# 如果找不到本機版本,`locally_resolved_nvm_version` 將為`N/A` local_resolved_nvm_version=$(nvm ls --no-colors "${nvm_version}" | command tail -1 | command tr -d '->*' | command tr -d '[:space:]') # 如果是尚未安裝,請安裝# `nvm install` 將隱含使用新安裝的版本if [ "${locally_resolved_nvm_version}" = 'N/A' ];然後 nvm 安裝「${nvm_version}」; elif [ "$(nvm 目前)" != "${locally_resolved_nvm_version}" ];然後 nvm 使用「${nvm_version}」; fi fi}別名 cd='cdnvm'cdnvm "$PWD" ||出口
此別名將從目前目錄“向上”搜索,以檢測.nvmrc
檔案。如果找到它,它將切換到該版本;如果沒有,它將使用預設版本。
當找到.nvmrc
時,此 shell 函數將安裝(如果需要),並且nvm use
指定的 Node 版本,否則nvm use default
。
將其放入$HOME/.zshrc
中,以便在您進入包含.nvmrc
檔案的目錄時自動呼叫nvm use
,該檔案中的字串告訴 nvm 要use
哪個節點:
# 將其放在 nvm 初始化之後! nvmrc_path="$(nvm_find_nvmrc)" if [ -n "$nvmrc_path" ];然後是本地nvmrc_node_version nvmrc_node_version=$(nvm 版本 "$(cat "${nvmrc_path}")") if [ "$nvmrc_node_version" = "N/A" ];然後 nvm install elif [ "$nvmrc_node_version" != "$(nvm 版本)" ];然後 nvm use fi elif [ -n "$(PWD=$OLDPWD nvm_find_nvmrc)" ] && [ "$(nvm 版本)" != "$(nvm 版本預設值)" ];然後 echo“恢復到 nvm 預設版本” nvm 使用預設 fi} 新增 zsh-hook chpwd 載入 nvmrc 載入nvmrc
這需要您安裝低音。
# ~/.config/fish/functions/nvm.fishfunction nvm 低音源 ~/.nvm/nvm.sh --no-use ';' nvm $argvend# ~/.config/fish/functions/nvm_find_nvmrc.fishfunction nvm_find_nvmrc 低音源 ~/.nvm/nvm.sh --no-use ';' nvm_find_nvmrcend# ~/.config/fish/functions/load_nvm.fishfunction load_nvm --on-variable="PWD" set -l default_node_version (nvm版本預設) set -l node_version (nvm版本) set -l nvmtest_nvm_ng_cind -n "$nvmrc_path" set -l nvmrc_node_version (nvm 版本(cat $nvmrc_path)) 如果測試"$nvmrc_node_version" = "N/A" nvm install (cat $nvmrc_path) 否則如果測試 "$nvmrc_node_version" != "$node_version" nvm use $nvmrc_node_version end else if test "$node_version" != "$default_node_version" echo "還原到預設節點版本" nvm use default endend# ~/.config/fish/config.fish# 必須在初始化時調用,否則監聽目錄切換不會工作負載_nvm > /dev/stderr
測試是用 Urchin 寫的。像這樣安裝 Urchin(和其他依賴項):
npm install
有慢速測試和快速測試。緩慢的測試會執行諸如安裝節點並檢查是否使用了正確的版本之類的事情。快速測試會偽造這個來測試別名和卸載等內容。從 nvm git 儲存庫的根目錄,執行快速測試,如下所示:
npm run test/fast
像這樣運行緩慢的測試:
npm run test/slow
像這樣運行所有測試:
npm test
注意事項:避免在測試運行時執行 nvm。
nvm 公開以下環境變數:
NVM_DIR
- nvm 的安裝目錄。
NVM_BIN
- 安裝節點、npm 和節點活動版本的全域套件的位置。
NVM_INC
- 節點的包含檔案目錄(對於為節點建立 C/C++ 外掛程式很有用)。
NVM_CD_FLAGS
- 用於保持與 zsh 的兼容性。
NVM_RC_VERSION
- .nvmrc 檔案的版本(如果正在使用)。
此外,nvm 在更改版本時會修改PATH
以及MANPATH
和NODE_PATH
(如果存在)。
要激活,您需要獲取bash_completion
:
[[ -r $NVM_DIR/bash_completion ]] && . $NVM_DIR/bash_completion
將上面的來源行放在您的設定檔( .bashrc
、 .bash_profile
)中 nvm 來源行的正下方。
NVVM:
$ nvm
選項卡
別名 deactivate install list-remote reinstall-packages uninstall version 快取執行安裝-最新-npm ls 運行卸載版本-遠端 目前幫助清單 ls-remote unalias 使用 which
nvm 別名:
$ nvm alias
卡
預設 iojs lts/* lts/argon lts/boron lts/carbon lts/dubnium lts/erbium 節點穩定不穩定
$ nvm alias my_alias
選項卡
v10.22.0 v12.18.3 v14.8.0
nvm使用:
$ nvm use
選項卡
my_alias default v10.22.0 v12.18.3 v14.8.0
nvm卸載:
$ nvm uninstall
選項卡
my_alias default v10.22.0 v12.18.3 v14.8.0
如果設定了一些非預設設置, nvm
會遇到一些問題。 (請參閱#606)已知以下因素會導致問題:
在~/.npmrc
裡面:
前綴='一些/路徑'
環境變數:
$NPM_CONFIG_PREFIX$PREFIX
外殼設定:
設定-e
為了提供最佳效能(和其他最佳化),當您執行nvm install X
時,nvm 將下載並安裝 Node(和 npm)的預編譯二進位。 Node 專案編譯、測試和託管/提供這些預編譯的二進位文件,這些二進位檔案是為主流/傳統 Linux 發行版(例如 Debian、Ubuntu、CentOS、RedHat 等)建置的。
與主流/傳統 Linux 發行版不同,Alpine Linux 是基於 BusyBox,這是一個非常緊湊(~5MB)的 Linux 發行版。 BusyBox(以及 Alpine Linux)使用與大多數主流/傳統 Linux 發行版不同的 C/C++ 堆疊 - musl。這使得為此主流/傳統構建的二進位程式與 Alpine Linux 不相容,因此我們不能簡單地在 Alpine Linux 上nvm install X
並期望下載的二進位檔案能夠正確運行- 如果您這樣做,您可能會看到“...不存在”錯誤嘗試。
nvm install
有一個-s
標誌,它請求 nvm 下載 Node 來源並在本地編譯。
如果您仍然想要或需要在 Alpine Linux 上安裝 nvm,那麼您應該能夠透過從 Alpine Linux shell 執行以下命令來實現此目的,具體取決於您使用的版本:
apk add -U curl bash ca-憑證 openssl ncurses coreutils python3 make gcc g++ libgcc linux-headers grep util-linux binutils findutils 捲曲 -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.1/install.sh |巴什
apk add -U curl bash ca-憑證 openssl ncurses coreutils python2 make gcc g++ libgcc linux-headers grep util-linux binutils findutils 捲曲 -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.1/install.sh |巴什
注意:Alpine 3.5 只能安裝 NodeJS v6.9.5 及以下版本,Alpine 3.6 只能安裝 v6.10.3 及以下版本,Alpine 3.7 安裝 v8.9.3 及以下版本,Alpine 3.8 安裝 v8.14.0 及以下版本,Alpine 3.9 3. Alpine 3.10 安裝v10.24.1 以下版本,Alpine 3.11 安裝v12.22.6 以下版本,Alpine 3.12安裝v12.22.12 以下版本,Alpine 3.13 和3.14 安裝v14.20.0 以下版本,Alpine 3.13 和3.14 安裝v14.20.0 以下版本,Alpine 3.1561.6pine 3.6161696p 316516pine 3.都是主分支上的版本)。 Alpine 3.5 - 3.12 需要python2
套件來建構 NodeJS,因為它們是要建置的舊版本。 Alpine 3.13+ 需要python3
才能成功建立較新的 NodeJS 版本,但如果您需要建立 Alpine 3.5 - 3.15 支援的 Node 版本,則可以將python2
與 Alpine 3.13+ 一起使用,只需指定需要安裝的 NodeJS 版本套件安裝腳本。
Node 專案有一些願望,但沒有具體計劃(由於建置、測試和支援的開銷)來提供與 Alpine 相容的二進位。
作為一個潛在的替代方案,@mhart(Node 貢獻者)預先安裝了一些用於 Alpine Linux 的 Docker 映像,其中包含 Node 和可選的 npm。
若要手動刪除nvm
,請執行以下命令:
首先,使用nvm unload
從終端機會話中刪除 nvm 指令並刪除安裝目錄:
$ nvm_dir="${NVM_DIR:-~/.nvm}"$ nvm 卸載 $ rm -rf“$nvm_dir”
編輯~/.bashrc
(或其他 shell 資源配置)並刪除以下行:
導出 NVM_DIR="$HOME/.nvm"[ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh" # 這會載入 nvm[[ -r $NVM_DIR/bash_completion ]] && . $NVM_DIR/bash_completion
為了方便開發和測試工作,我們提供了一個供開發使用的 Dockerfile,它基於 Ubuntu 18.04 基礎鏡像,準備了nvm
開發必備且有用的工具,構建環境的 docker 映像,運行 docker 命令: nvm
存儲庫的根目錄:
$ docker build -t nvm-dev 。
這會將您目前的 nvm 儲存庫與我們預先定義的開發環境打包到名為nvm-dev
docker 映像中,一旦成功構建,就可以透過docker images
驗證您的映像:
$ docker 圖片 儲存庫標籤圖像 ID 建立大小 nvm-dev 最新 9ca4c57a97d8 7 天前 650 MB
如果您沒有收到錯誤訊息,現在您可以輕鬆參與:
$ docker run -h nvm-dev -it nvm-dev nvm@nvm-dev:~/.nvm$
請注意,建造鏡像大約需要 8 分鐘,鏡像大小約為 650MB,因此不適合生產使用。
關於docker的更多資訊和文件請參考其官網:
https://www.docker.com/
https://docs.docker.com/
如果您嘗試安裝節點版本但安裝失敗,請務必執行nvm cache clear
以刪除快取的節點下載,否則您可能會收到以下錯誤:
curl: (33) HTTP 伺服器似乎不支援位元組範圍。無法恢復。
我的sudo node
在哪裡?看看#43
在 Node v0.8.6 版本之後,nvm 會嘗試從二進位套件安裝。但在某些系統中,由於共享庫不相容,官方二進位套件無法運作。在這種情況下,請使用-s
選項強制從來源安裝:
nvm安裝-s 0.8.6
如果設定default
別名不會在新 shell 中建立節點版本(即nvm current
產生system
),請確保系統的節點PATH
設定在 shell 設定檔中的nvm.sh
原始碼行之前(請參閱 #658)
在 vim shell 中找不到 nvm 節點版本
如果您將節點版本設定為系統節點版本nvm use 6.2.1
以外的版本,然後開啟 vim 並執行:!node -v
如果您看到系統版本v0.12.7
您應該會看到v6.2.1
。你需要運行:
sudo chmod ugo-x /usr/libexec/path_helper
有關此問題的更多信息,請參閱 dotphiles/dotzsh。
nvm 與 npm 配置「前綴」選項不相容
可以在此處找到此問題的一些解決方案
還有一種邊緣情況會導致此問題,即$HOME
路徑與使用者主目錄的實際名稱不符。
您必須確保$HOME
中的使用者目錄名稱和您在執行ls /Users/
中看到的使用者目錄名稱的大寫方式相同(請參閱此問題)。
若要變更使用者目錄和/或帳戶名,請按照此處的說明操作
Homebrew 讓 zsh 目錄不安全
zsh compinit:不安全的目錄,執行 compaudit 取得清單。 忽略不安全目錄並繼續 [y] 或中止 compinit [n]? y
Homebrew 會導致不安全的目錄,例如/usr/local/share/zsh/site-functions
和/usr/local/share/zsh
。這不是一個nvm
問題 - 這是一個自製問題。請參閱此處以取得與該問題相關的一些解決方案。
配備 Apple Silicon 晶片的 Mac
Node.js v15.3 中添加了對 Apple Silicon 晶片架構的實驗性支持,v16.0 中添加了全面支持。因此,如果您嘗試像往常一樣安裝舊版的 Node,您可能會在安裝 Node 時遇到編譯錯誤,或者在執行程式碼時遇到記憶體不足錯誤。
因此,如果您想在 Apple Silicon Mac 上執行 v16.0 之前的版本,最好編譯針對x86_64
Intel 架構的節點,以便 Rosetta 2 可以將x86_64
處理器指令轉換為基於 ARM 的 Apple Silicon 指令。您需要執行以下操作:
安裝 Rosetta(如果尚未安裝)
$ softwareupdate --install-rosetta
您可能想知道,「我的 Apple Silicon Mac 如何知道將 Rosetta 用於為 Intel 晶片編譯的節點版本?」。如果可執行檔僅包含 Intel 指令,macOS 將自動使用 Rosetta 來翻譯指令。
開啟使用 Rosetta 執行的 shell
$ 拱門-x86_64 zsh
注意:相同的事情也可以透過在 Finder 中找到終端或 iTerm 應用程序,右鍵單擊,選擇“獲取資訊”,然後選中標有“使用 Rosetta 打開”的方塊來完成。
注意:此終端機會話現在正在zsh
中執行。如果zsh
不是您通常使用的 shell,則nvm
可能不會像您通常的 shell 透過點檔案那樣自動source
化。如果是這種情況,請確保來源nvm
。
$源“${NVM_DIR}/nvm.sh”
安裝您感興趣的任何舊版本的節點。這將獲取節點原始碼並進行編譯,這將需要幾分鐘的時間。
$ nvm install v12.22.1 --shared-zlib
注意:您可能會好奇為什麼包含--shared-zlib
。 Apple 系統clang
編譯器的最新版本有一個錯誤。如果您的系統上安裝了這些損壞的版本之一,即使您沒有包含--shared-zlib
標誌,上述步驟也可能仍然會成功。但是,稍後,當您嘗試使用舊版的 Node.js npm install
某些內容時,您將看到incorrect data check
錯誤。如果您想避免處理此問題可能出現的麻煩,請包含該標誌。有關更多詳細信息,請參閱此問題和此評論
退出並返回您的本機 shell。
$退出$拱門 ARM64
注意:如果您選擇了標有“使用 Rosetta 打開”的框,而不是在第二步驟中運行 CLI 命令,您將在此處看到i386
。除非您有其他原因選擇該框,否則您現在可以取消選擇它。
檢查以確保架構正確。 x64
是x86_64
的縮寫,這就是您想要看到的。
$ 節點 -p process.arch x64
現在您應該可以像往常一樣使用節點了。
如果您在 WSL-2 上遇到此錯誤:
捲曲 -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.1/install.sh |巴什 % 總計 % 已接收 % Xferd 平均速度 時間 時間 時間 當前 Dload 上傳總花費左速度 0 0 0 0 0 0 0 0 --:--:-- 0:00:09 --:--:-- 0curl: (6) 無法解析主機:raw.githubusercontent.com
這可能是由於您的防毒軟體、VPN 或其他原因造成的。
可以ping 8.8.8.8
,但無法ping google.com
這可以透過在根目錄中執行以下命令來簡單地解決:
須藤 rm /etc/resolv.conf sudo bash -c 'echo "nameserver 8.8.8.8" > /etc/resolv.conf'sudo bash -c 'echo "[network]" > /etc/wsl.conf'sudo bash -c 'echo "generateResolvConf = false" >> /etc/wsl.conf'sudo chattr +i /etc/resolv.conf
這將刪除執行 WSL 時自動產生的resolv.conf
文件,建立新檔案並放入nameserver 8.8.8.8
,然後建立wsl.conf
檔案並新增[network]
和generateResolveConf = false
以防止自動產生該檔案檔案。
您可以透過執行以下命令來檢查文件的內容:
貓 /etc/resolv.conf
目前,唯一的維護者是@ljharb - 非常歡迎更多的維護者,我們希望隨著時間的推移將人員添加到團隊中。隨著專案的發展,治理將被重新評估。
僅支援最新版本(目前為 v0.40.1)。
如果您無法更新至最新版本的nvm
,我們的合作夥伴將為所有不受支援的版本提供商業安全修復:
HeroDevs 永無止境的支持
請參閱 LICENSE.md。
版權所有 OpenJS 基金會和nvm
貢獻者。版權所有。 OpenJS 基金會已註冊商標並使用商標。 有關 OpenJS 基金會的商標列表,請參閱我們的商標政策和商標列表。 Node.js 是 Joyent, Inc. 的商標,經其許可使用。 OpenJS 基金會商標清單中未註明的商標和標誌是其各自所有者的商標™或註冊®商標。使用它們並不意味著與它們有任何隸屬關係或得到它們的認可。
OpenJS 基金會 |使用條款 |隱私權政策 | OpenJS 基金會章程 |商標政策|商標列表| Cookie 政策