n
– 互動式管理您的 Node.js 版本Node.js 版本管理:沒有子 shell、沒有設定檔設定、沒有複雜的 API,只有簡單的.
n
– 互動式管理您的 Node.js 版本n
在 macOS、Linux(包括適用於 Linux 的 Windows 子系統)以及各種其他類 UNIX 系統上支援。它被編寫為 BASH 腳本,但不要求您使用 BASH 作為命令 shell。
n
不適用於 Microsoft Windows 上的本機 shell(如 PowerShell)、Windows BASH 的 Git 或 Cygwin DLL。
如果您已經安裝了 Node.js,安裝n
的簡單方法是使用npm
:
npm install -g n
執行n
時使用的預設根位置是/usr/local
,一般使用者沒有寫入權限。使用 npm 安裝全域模組時,您可能會遇到相同的權限錯誤,如上面的命令。您有三個主要選擇:
n
使用您有寫入權限的自訂位置(請參閱N_PREFIX
)sudo
放在命令前面以超級用戶身份運行它n
在子目錄n/versions
中快取 Node.js 版本。活動的Node.js 版本安裝在子目錄bin
、 include
、 lib
和share
。
取得系統目錄的所有權(選項 1):
# make cache folder (if missing) and take ownership
sudo mkdir -p /usr/local/n
sudo chown -R $(whoami) /usr/local/n
# make sure the required folders exist (safe to execute even if they already exist)
sudo mkdir -p /usr/local/bin /usr/local/lib /usr/local/include /usr/local/share
# take ownership of Node.js install destination folders
sudo chown -R $(whoami) /usr/local/bin /usr/local/lib /usr/local/include /usr/local/share
如果npm
尚不可用,引導安裝的一種方法是直接下載並執行n
。要安裝 Node.js 的lts
版本:
curl -fsSL https://raw.githubusercontent.com/tj/n/master/bin/n | bash -s install lts
# If you want n installed, you can use npm now.
npm install -g n
如果您不需要n
本身更新的支持,您可以直接儲存下載:
curl -fsSL -o /usr/local/bin/n https://raw.githubusercontent.com/tj/n/master/bin/n
chmod 0755 /usr/local/bin/n
n install lts
在裝有 Homebrew 的 macOS 上,您可以安裝 n 公式。
brew install n
或者在具有 MacPorts 的 macOS 上,您可以安裝 n 連接埠:
port install n
在 Linux 和 macOS 上,n-install 允許直接從 GitHub 安裝;例如:
curl -L https://bit.ly/n-install | bash
n-install 將PREFIX
和N_PREFIX
設定為$HOME/n
,將n
安裝到$HOME/n/bin
,修改支援的 shell 的初始化檔案以匯出N_PREFIX
並將$HOME/n/bin
新增至PATH
,並安裝最新的LTS Node.js 版本。
因此, n
本身以及它管理的所有 Node.js 版本都託管在一個可選的可配置目錄中,稍後您可以使用包含的n-uninstall
腳本將其刪除。 n-update
將n
本身更新為最新版本。有關更多詳細信息,請參閱 n-install 存儲庫。
從先前安裝的 Node.js 更改到其他位置可能需要一些額外的步驟。請參閱更改節點位置的文檔,以了解從使用 Homebrew 切換到使用n
管理 Node.js 的演練範例。
如果安裝節點後您看到「已安裝」和「活動」位置不同,則表示多個版本有問題:
% n lts
copying : node/20.12.2
installed : v20.12.2 to /usr/local/bin/node
active : v21.7.3 at /opt/homebrew/bin/node
只需執行n <version>
即可下載並安裝 Node.js 的版本。如果已下載<version>
, n
將從其快取中安裝。
n 10.16.0
n lts
單獨執行n
以查看下載的版本,並安裝所選版本。
$ n
node/4.9.1
ο node/8.11.3
node/10.15.0
Use up/down arrow keys to select a version, return key to install, d to delete, q to quit
(您也可以使用j和k選擇下一個或上一個版本,而不是使用箭頭或ctrl+n和ctrl+p 。)
如果活動節點版本在安裝後沒有更改,請嘗試開啟新的 shell,以防您看到過時的版本。
有多種方法可以指定n
指令的目標 Node.js 版本。大多數指令使用最新的符合版本, n ls-remote
列出多個符合版本。
數位版本號可以是完整的或不完整的,帶有可選的前導v
。
4.9.1
8
: 8.xy 版本v6.1
:6.1.x 版本有兩個特別有用的版本的標籤:
lts
:最新的長期支援官方版本latest
, current
:最新的官方版本有一個auto
標籤可以從目前目錄或任何父目錄中的檔案讀取目標版本。 n
依序找:
.n-node-version
:單行版本。自訂為n
。.node-version
:單行版本。由多個工具使用:node-version-usage.nvmrc
:單行版本。由nvm
使用。engine
。 engine
標籤尋找package.json
檔案並讀取engines
欄位以決定相容的 Node.js。需要安裝版本的jq
或node
,並使用npx semver
解析複雜的範圍。
支援指定的發布流:
argon
、 boron
、 carbon
:LTS 發布流的代號可以使用這些 Node.js 支援別名,但只需解析為最新的匹配版本:
active
、 lts_active
、 lts_latest
、 lts
、 current
、 supported
最後一個版本形式用於使用遠端下載資料夾的名稱(可選地後跟完整或不完整版本)來指定其他可用版本。
nightly
test/v11.0.0-test20180528
rc/10
刪除一些快取版本:
n rm 0.9.4 v0.10.0
刪除除已安裝版本之外的所有快取版本:
n prune
刪除已安裝的 Node.js(不影響快取版本)。這對於恢復到節點的系統版本(如果位於不同的位置),或者如果您不再希望使用節點和 npm,或者切換到不同的管理方式非常有用。
n uninstall
有三個指令可直接使用您下載的 Node.js 版本,而無需重新安裝。
您可以顯示下載的node
版本的路徑:
$ n which 6.14.3
/usr/local/n/versions/6.14.3/bin/node
或使用n run
指令運行下載的node
版本:
n run 8.11.3 --debug some.js
或執行修改PATH
的指令,以便node
和npm
將來自下載的 Node.js 版本。 (注意: npm
以這種方式運行將使用目標節點版本資料夾中的全域 node_modules。)
n exec 10 my-script --fast test
n exec lts zsh
Node.js 安裝通常還包括npm
、 npx
和corepack
,但您可能想要使用--preserve
保留目前(尤其是較新的)版本:
$ npm install -g npm@latest
...
$ npm --version
6.13.7
# Node.js 8.17.0 includes (older) npm 6.13.4
$ n -p 8
installed : v8.17.0
$ npm --version
6.13.7
您可以將環境變數設為非空字串來將其設為預設值。 npm
和corepack
有單獨的環境變數:
export N_PRESERVE_NPM=1
export N_PRESERVE_COREPACK=1
無論環境變數為何,您都可以明確地獲得所需的行為:
n --preserve nightly
n --no-preserve latest
命令列幫助可以從n --help
取得。
列出可供下載的匹配遠端版本:
n ls-remote lts
n ls-remote latest
n lsr 10
n --all lsr
列出快取中下載的版本:
n ls
下載版本到快取:
n download 22
使用n
在沒有網路可用的情況下存取快取版本(已下載)。
n --offline 12
使用--cleanup
安裝後刪除快取版本。這對於一次性安裝特別有用,例如在 Docker 容器中。
curl -fsSL https://raw.githubusercontent.com/tj/n/master/bin/n | bash -s install --cleanup lts
通常,如果目標版本尚未在快取中,則n run
、 n exec
和n which
將會失敗。您可以新增--download
以使用快取(如果可用)或根據需要下載:
n --download run 18.3 my-script.js
顯示診斷有助於解決問題:
n doctor
如果您想使用與預設 https://nodejs.org/dist/ 具有相同佈局的不同 Node.js 映像,您可以定義N_NODE_MIRROR
。
一個例子是中國用戶可以定義:
export N_NODE_MIRROR=https://npmmirror.com/mirrors/node
另一個例子是 Node.js 非官方建置項目,提供了一些未正式提供的平台的下載,例如 armv6l (Raspberry Pi) 和 32 位元 x86。
export N_NODE_MIRROR=https://unofficial-builds.nodejs.org/download/release
如果n
沒有自動偵測到,您可能需要明確指定架構,例如在 Alpine 上使用musl
libc
:
export N_NODE_MIRROR=https://unofficial-builds.nodejs.org/download/release
apk add bash curl libstdc++
n --arch x64-musl install lts
如果自訂鏡像需要身份驗證,您可以將 url 編碼的使用者名稱和密碼新增至 URL 。例如
export N_NODE_MIRROR=https://encoded-username:encoded-password@host:port/path
還有N_NODE_DOWNLOAD_MIRROR
用於與預設 https://nodejs.org/download 具有相同佈局的不同鏡像。
預設情況下, n
選擇與您的系統架構相符的二進位。例如,在 64 位元系統上, n
將下載 64 位元二進位檔案。
在配備 Apple 晶片的 Mac 上:
n
預設為本地運行的 arm64 二進位文件n
預設為在 Rosetta 2 中運行的 x64 二進位文件您可以使用-a
或--arch
選項覆寫預設體系結構。
例如,使用 x64 二進位檔案重新安裝最新版本的 Node.js:
n rm current
n --arch x64 current
預設情況下, n
指令下載並安裝到/usr/local
,但您可以透過定義N_PREFIX
來覆寫此位置。若要將位置變更為$HOME/.n
,請將以下行新增至 shell 初始化檔案:
export N_PREFIX=$HOME/.n
export PATH=$N_PREFIX/bin:$PATH
如果您想將下載儲存在不同的位置,請使用N_CACHE_PREFIX
。這不會影響活動節點版本的安裝位置。
如果系統上的 tar 可能支援 xz 解壓縮, n
預設使用 xz 壓縮的 Node.js tarball 進行下載。您可以將環境變數設為零或非零來覆寫自動選擇:
export N_USE_XZ=0 # to disable
export N_USE_XZ=1 # to enable
無論環境變數為何,您都可以明確地獲得所需的行為:
n install --use-xz nightly
n install --no-use-xz latest
簡而言之:
N_NODE_MIRROR
:請參閱自訂來源N_NODE_DOWNLOAD_MIRROR
:請參閱自訂來源N_MAX_REMOTE_MATCHES
變更預設ls-remote
最多 20 個符合版本N_PRESERVE_NPM
:請參閱保留 npmN_PRESERVE_COREPACK
:請參閱保留 npm n
下載預先建置的 Node.js 套件並安裝到單一前綴(例如/usr/local
)。這將覆蓋以前的版本。此位置中的bin
資料夾應該位於您的PATH
中(例如/usr/local/bin
)。
下載的內容保存在快取資料夾中,以便重新安裝使用。使用n which
和n run
和n exec
也可以下載有限的用途。
全域npm
套件不會因安裝而更改,但npm
本身除外,它是 Node.js 安裝的一部分。