在 Node.js 的生態系中,npm 和 nvm 是兩個非常重要的工具。npm 是套件管理器,而 nvm 是 Node.js 版本管理器。
什麼是 npm
npm 全名是 Node Package Manager,是 Node.js 的套件管理器。它讓開發者可以輕鬆地安裝、更新、移除和管理 JavaScript 套件。
npm 的主要功能
- 套件安裝:安裝第三方套件
- 依賴管理:管理專案的依賴關係
- 腳本執行:執行自定義的腳本命令
- 版本管理:管理套件的版本
npm 基本命令
初始化專案
# 建立新的 package.json 檔案
npm init
# 使用預設設定快速初始化
npm init -y
安裝套件
# 安裝套件並加入 dependencies
npm install <package-name>
npm i <package-name>
# 安裝套件並加入 devDependencies
npm install <package-name> --save-dev
npm i <package-name> -D
# 全域安裝套件
npm install <package-name> --global
npm i <package-name> -g
# 安裝特定版本的套件
npm install <package-name>@<version>
移除套件
# 移除套件
npm uninstall <package-name>
npm remove <package-name>
# 移除全域套件
npm uninstall <package-name> --global
更新套件
# 更新所有套件
npm update
# 更新特定套件
npm update <package-name>
# 檢查過期的套件
npm outdated
其他實用命令
# 查看已安裝的套件
npm list
npm ls
# 查看套件資訊
npm info <package-name>
# 執行 package.json 中定義的腳本
npm run <script-name>
# 清除 npm 快取
npm cache clean --force
package.json 檔案
package.json 是專案的配置檔案,包含了專案的基本資訊和依賴管理:
{
"name": "my-project",
"version": "1.0.0",
"description": "我的專案描述",
"main": "index.js",
"scripts": {
"start": "node index.js",
"dev": "nodemon index.js",
"test": "jest",
"build": "webpack"
},
"dependencies": {
"express": "^4.18.0",
"lodash": "^4.17.21"
},
"devDependencies": {
"nodemon": "^2.0.15",
"jest": "^28.0.0"
},
"keywords": ["javascript", "node"],
"author": "Your Name",
"license": "MIT"
}
什麼是 nvm
nvm 全名是 Node Version Manager,是 Node.js 的版本管理器。它讓開發者可以在同一台電腦上安裝和切換不同版本的 Node.js。
為什麼需要 nvm
- 多版本需求:不同專案可能需要不同版本的 Node.js
- 版本測試:測試程式在不同 Node.js 版本下的相容性
- 升級安全:可以安全地升級或降級 Node.js 版本
nvm 安裝
macOS/Linux
# 使用 curl 安裝
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash
# 或使用 wget 安裝
wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash
# 重新載入終端機設定
source ~/.bashrc
Windows
Windows 使用者可以安裝 nvm-windows:
- 從 nvm-windows GitHub 下載安裝包
- 執行安裝程式
nvm 基本命令
# 查看 nvm 版本
nvm --version
# 列出所有可安裝的 Node.js 版本
nvm list-remote
nvm ls-remote
# 列出已安裝的 Node.js 版本
nvm list
nvm ls
# 安裝最新版本的 Node.js
nvm install node
# 安裝特定版本的 Node.js
nvm install 16.18.0
# 安裝最新的 LTS 版本
nvm install --lts
# 切換到特定版本
nvm use 16.18.0
# 設定預設版本
nvm alias default 16.18.0
# 查看目前使用的版本
nvm current
# 移除特定版本
nvm uninstall 14.20.0
實際使用場景
專案 A 使用 Node.js 16
cd project-a
nvm use 16
npm install
npm start
專案 B 使用 Node.js 18
cd project-b
nvm use 18
npm install
npm start
使用 .nvmrc 檔案
在專案根目錄建立 .nvmrc 檔案:
16.18.0
然後在專案目錄執行:
nvm use
# 自動切換到 .nvmrc 指定的版本
npm vs yarn
除了 npm,還有其他套件管理器如 yarn:
| 特性 | npm | yarn |
|---|---|---|
| 安裝速度 | 較慢 | 較快 |
| 離線安裝 | 支援 | 支援 |
| 鎖定檔案 | package-lock.json | yarn.lock |
| 安全性 | 良好 | 良好 |
最佳實務
- 使用 .nvmrc:為每個專案指定 Node.js 版本
- 鎖定版本:提交 package-lock.json 到版本控制
- 定期更新:定期檢查和更新套件版本
- 區分依賴:正確區分 dependencies 和 devDependencies
- 使用 npm audit:定期檢查安全性漏洞
# 檢查安全性漏洞
npm audit
# 自動修復漏洞
npm audit fix