Appearance
npm v.s. npx
1️⃣ npm (Node Package Manager)
主要用途:管理 Node.js 套件(安裝、更新、移除)。
安裝方式:
bashnpm install <package-name>- 安裝到本地專案:
node_modules資料夾 - 安裝到全域:
npm install -g <package-name>
- 安裝到本地專案:
執行套件:
如果套件有 CLI,通常會透過
npx或設定scripts執行。例如:
bashnpm install typescript npx tsc --version
2️⃣ npx (Node Package eXecute)
主要用途:執行 Node.js 套件的 CLI 命令,而不一定要全域安裝。
特性:
- 可以直接執行專案中
node_modules/.bin下的命令。 - 可以臨時下載並執行套件(不會留在專案或全域)。
- 可以直接執行專案中
使用範例:
bashnpx create-react-app my-app- 即使你沒全域安裝
create-react-app,npx也會自動幫你下載並執行一次。
bashnpx cowsay "Hello World"- 會臨時下載並執行
cowsay。
- 即使你沒全域安裝
3️⃣ 總結差異
| 功能 | npm | npx |
|---|---|---|
| 主要用途 | 安裝套件 | 執行套件 CLI |
| 是否需要安裝 | 必須先安裝(本地或全域) | 可以不安裝,臨時執行 |
| 安裝範圍 | 本地 / 全域 | 不改變本地或全域環境,可臨時執行 |
| 適用情境 | 管理專案依賴 | 立即使用 CLI 工具(一次性或專案內) |
情境
| 情境 | 推薦使用 |
|---|---|
| 專案依賴管理 | npm install |
| 全域安裝工具(長期使用) | npm install -g |
| 一次性 CLI 工具 | npx |
| 專案已安裝套件快速執行 | npx |
| 避免全域污染 & 測試最新版本 | npx |