Node.js 安裝方式直接影響版本管理、權限模型與升級維護體驗。本文對比 官方預編譯二進制包、源碼編譯、系統套件管理器 三種傳統方式,並強烈推薦 nvm (Node Version Manager) 作為現代開發環境的最佳實踐,解決多版本共存、全域權限、自動切換等核心痛點。
# 1. 下載 (至 nodejs.org/dist/latest/ 選擇 linux-x64.tar.xz)
wget https://nodejs.org/dist/v20.11.0/node-v20.11.0-linux-x64.tar.xz
# 2. 解壓至自定目錄 (如 /opt/node-v20.11.0)
tar xf node-v20.11.0-linux-x64.tar.xz -C /opt
# 3. 建立全域軟連結 (不汙染 /usr/local)
ln -sf /opt/node-v20.11.0/bin/node /usr/local/bin/node
ln -sf /opt/node-v20.11.0/bin/npm /usr/local/bin/npm
ln -sf /opt/node-v20.11.0/bin/npx /usr/local/bin/npx
# 4. 驗證
node -v && npm -v
優點:無編譯依賴、啟動快、可並存多版本目錄。
缺點:手動管理版本切換、npm 全域套件權限需額外配置 (建議 npm config set prefix ~/.npm-global)。
# 1. 安裝編譯工具鏈
yum install -y gcc gcc-c++ make python3 openssl-devel # CentOS/RHEL
apt-get install -y build-essential python3 libssl-dev # Debian/Ubuntu
# 2. 下載源碼
wget https://nodejs.org/dist/v20.11.0/node-v20.11.0.tar.gz
tar xzf node-v20.11.0.tar.gz && cd node-v20.11.0
# 3. 配置與編譯 (啟用 LTO 優化、共享庫)
./configure --prefix=/usr/local/node20 --enable-lto --shared-openssl --shared-zlib --shared-libuv
make -j$(nproc)
make install
# 4. 環境變數
echo 'export PATH=/usr/local/node20/bin:$PATH' >> ~/.bashrc
source ~/.bashrc
適用:ARM/MIPS 等非 x86_64 架構、需自定 V8 參數、嵌入式交叉編譯。
# Ubuntu/Debian
sudo apt-get install nodejs npm
# 版本通常落後 1-2 年 (如 Ubuntu 20.04 僅 Node 10.x)
# CentOS/RHEL (EPEL)
sudo yum install nodejs npm
# 同樣版本落後
致命缺點:版本過舊無法運行現代框架 (Next.js, Vite 等需 Node 18+),npm 版本也舊導致相依解析失敗。
# 1. 安裝 nvm (檢查最新版本 https://github.com/nvm-sh/nvm)
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
# 或 wget -qO- ... | bash
# 2. 重啟 Shell 或 source 配置
source ~/.bashrc # 或 ~/.zshrc
# 3. 安裝/切換版本
nvm install 20 # 安裝最新 LTS (Hydrogen)
nvm install 18 # 安裝舊 LTS
nvm use 20 # 當前 Shell 切換
nvm alias default 20 # 設定預設版本 (新 Shell 自動載入)
# 4. 專案級自動切換 (.nvmrc)
echo "20" > .nvmrc
# 進入目錄自動提示切換,配合 cd hook 可全自動
| 痛點 | nvm 解決方案 |
|---|---|
| 多專案需不同 Node 版本 | .nvmrc + nvm use / avn 自動切換 |
| npm 全域套件權限 (EACCES) | 每版本獨立 ~/.nvm/versions/node/v*/lib/node_modules,無需 sudo |
| 升級/降級風險 | 版本隔離,隨時 nvm install 新版測試,nvm uninstall 乾淨移除 |
| CI/CD 一致性 | nvm install 可在 Pipeline 中精確鎖定版本 |
node:20-alpine 或 nvm install 20 && npm ci --production。apt/yum install nodejs 用於現代前端專案。