如果你曾經使用過 Node.js,那麼你可能遇到過 npm
和 npx
。雖然它們聽起來相似,並且都是 Node.js 生態系統的重要組成部分,但它們的用途不同。這篇文章將探討 npm
和 npx
之間的差異,幫助你了解何時以及為什麼使用每個工具。
NPM,全名為 Node 套件管理器,是 Node.js 的預設套件管理工具。它允許開發者在其專案中安裝、分享和管理套件(庫或代碼模組)。
以下是一些 npm
幫助處理的常見任務:
npm install <package-name>
管理套件版本: 鎖定特定版本的庫,以確保構建一致。
運行專案特定的腳本: 在 package.json
文件中定義的腳本。
npm run <script-name>
npx
是在 NPM 版本 5.2.0(2017 年 7 月)中引入的工具。當 npm 負責管理依賴和套件時,npx 則旨在執行 Node.js 套件,尤其是命令行工具,而無需全局安裝它們。
1. 套件安裝與執行
npm
安裝套件時,它會將套件全局或本地安裝到你的專案目錄。因此你必須先安裝套件才能使用它。npm install -g create-react-app
create-react-app my-app
npx
,你可以運行命令行工具或可執行檔 而無需全局安裝。例如,你可以在不全局安裝的情況下運行 create-react-app。npx create-react-app my-app
這節省了時間和磁碟空間,因為你避免了安裝那些可能只使用一次的套件。
2. 全局套件
當你使用 npm
時,全局套件會安裝並在系統中持續存在,這有時會讓你的環境變得雜亂。
而使用 npx,你可以執行套件而不擔心在系統中長期保留它。
以下是全局安裝套件的 npm
示例:
npm install -g typescript
tsc --version
使用 npx
,不需要全局安裝:
npx tsc --version
3. 自動套件處理
當你使用 npx
執行命令時,它會自動檢查該套件是否存在於本地或全局,若不存在,則會暫時下載並執行。這對於執行一次性任務尤其有用。
例如:
npx cowsay "Hello, World!"
這會在未安裝時下載 cowsay 套件,然後運行,並在之後清理。
4. 無需腳本的套件可執行檔
當使用 npm
執行 package.json
腳本中定義的命令時,你會寫:
npm run my-script
但使用 npx
,你可以直接運行可執行命令:
npx my-script
如果腳本未明確定義在 package.json
中,這尤其有用。
- 管理依賴: 使用 npm
安裝、更新和移除專案依賴。
- 運行專案特定腳本: 在 package.json
中定義並量身訂做的腳本。
- 管理套件版本: 鎖定特定版本的庫以維持專案一致性。
- 一次性套件執行: 對於你不希望全局安裝的套件,如只會使用一次的命令行工具,使用 npx
。
- 運行可執行檔: 對於像 create-react-app 這樣的命令,npx 讓你可以在不全局安裝的情況下運行它們。
- 測試不同版本: 快速執行特定版本的工具而無需安裝。
最後,npm
和 npx
都是 Node.js 生態系統中的必備工具,但它們的用途不同。使用 npm
來管理專案的依賴,並使用 npx
來執行無需永久安裝的套件。
這一小區別可以使你的工作流程更高效,節省時間並避免不必要的全局安裝。