npm 註冊表包含套件,其中許多套件也是 Node 模組,或包含 Node 模組。請繼續閱讀,了解它們的差異以及它們如何互動。

關於套件

套件是一個由 package.json 檔案描述的檔案或目錄。套件必須包含 package.json 檔案才能發佈到 npm 註冊表。如需建立 package.json 檔案的詳細資訊,請參閱「建立 package.json 檔案」。

套件可以是未限定範圍的,或限定範圍到使用者或組織,而限定範圍的套件可以是私人或公開的。如需詳細資訊,請參閱

關於套件格式

套件是下列任一項

  • a) 包含由 package.json 檔案描述的程式的資料夾。
  • b) 包含 (a) 的壓縮 tarball。
  • c) 解析為 (b) 的 URL。
  • d) 在註冊表上發佈 (c) 的 <name>@<version>
  • e) 一個指向 (d) 的 <name>@<tag>
  • f) 一個具有滿足 (e) 的 latest 標籤的 <name>
  • g) 一個 git 網址,複製後會產生 (a)。

npm 套件 git URL 格式

用於 npm 套件的 Git 網址可以格式化為以下方式

  • git://github.com/user/project.git#commit-ish
  • git+ssh://user@hostname:project.git#commit-ish
  • git+http://user@hostname/project/blah.git#commit-ish
  • git+https://user@hostname/project/blah.git#commit-ish

commit-ish 可以是任何標籤、SHA 或分支,可以作為參數提供給 git checkout。預設的 commit-ishHEAD

關於模組

模組node_modules 目錄中任何可以由 Node.js require() 函式載入的檔案或目錄。

要由 Node.js require() 函式載入,模組必須符合下列其中一項

  • 一個包含 "main" 欄位的 package.json 檔案的資料夾。
  • 一個 JavaScript 檔案。

注意:由於模組不需要有 package.json 檔案,因此並非所有模組都是套件。只有具有 package.json 檔案的模組才是套件。

在 Node 程式碼的脈絡中,module 也是從檔案中載入的內容。例如,在以下程式碼中

var req = require('request')

我們可能會說「變數 req 參照 request 模組」。