如果你曾經使用過 Node.js,那麼你可能遇到過 npmnpx。雖然它們聽起來相似,並且都是 Node.js 生態系統的重要組成部分,但它們的用途不同。這篇文章將探討 npmnpx 之間的差異,幫助你了解何時以及為什麼使用每個工具。

什麼是 NPM?

NPM,全名為 Node 套件管理器,是 Node.js 的預設套件管理工具。它允許開發者在其專案中安裝、分享和管理套件(庫或代碼模組)。

以下是一些 npm 幫助處理的常見任務:

  • 安裝依賴:
npm install <package-name>
  • 管理套件版本: 鎖定特定版本的庫,以確保構建一致。

  • 運行專案特定的腳本:package.json 文件中定義的腳本。

npm run <script-name>

什麼是 NPX?

npx 是在 NPM 版本 5.2.0(2017 年 7 月)中引入的工具。當 npm 負責管理依賴和套件時,npx 則旨在執行 Node.js 套件,尤其是命令行工具,而無需全局安裝它們。

NPM 與 NPX 之間的關鍵差異

1. 套件安裝與執行

  • NPM: 當你使用 npm 安裝套件時,它會將套件全局或本地安裝到你的專案目錄。因此你必須先安裝套件才能使用它。
npm install -g create-react-app
create-react-app my-app
  • NPX: 使用 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

- 管理依賴: 使用 npm 安裝、更新和移除專案依賴。

- 運行專案特定腳本:package.json 中定義並量身訂做的腳本。

- 管理套件版本: 鎖定特定版本的庫以維持專案一致性。

何時使用 NPX

- 一次性套件執行: 對於你不希望全局安裝的套件,如只會使用一次的命令行工具,使用 npx

- 運行可執行檔: 對於像 create-react-app 這樣的命令,npx 讓你可以在不全局安裝的情況下運行它們。

- 測試不同版本: 快速執行特定版本的工具而無需安裝。

最後,npmnpx 都是 Node.js 生態系統中的必備工具,但它們的用途不同。使用 npm 來管理專案的依賴,並使用 npx 來執行無需永久安裝的套件。

這一小區別可以使你的工作流程更高效,節省時間並避免不必要的全局安裝。


原文出處:https://dev.to/jagroop2001/npm-vs-npx-1anc


共有 0 則留言