範圍

範圍套件

選擇 CLI 版本

說明

所有 npm 套件都有名稱。有些套件名稱也有範圍。範圍遵循套件名稱的通常規則(URL 安全字元,沒有前導點或底線)。在套件名稱中使用時,範圍會加上 @ 符號,然後加上斜線,例如:

@somescope/somepackagename

範圍是一種將相關套件分組在一起的方式,也會影響 npm 處理套件的方式。

每個 npm 使用者/組織都有自己的範圍,而且只有你能在你的範圍中新增套件。這表示你不必擔心有人搶先取用你的套件名稱。因此,這也是組織發布官方套件的好方法。

範圍套件可以從 npm@2 開始發布和安裝,並且受到主要 npm 註冊表的支援。非範圍套件可以依賴於範圍套件,反之亦然。npm 用戶端向下相容於非範圍註冊表,因此可以同時用於處理範圍和非範圍註冊表。

安裝範圍套件

範圍套件會安裝到一般安裝資料夾的子資料夾中,例如,如果你的其他套件安裝在 node_modules/packagename,範圍模組將安裝在 node_modules/@myorg/packagename。範圍資料夾 (@myorg) 只是範圍名稱加上 @ 符號,而且可以包含任意數量的範圍套件。

範圍套件透過在 npm install 中使用名稱,加上 @ 符號來安裝。

npm install @myorg/mypackage

或在 package.json

"dependencies": {
"@myorg/mypackage": "^1.3.0"
}

請注意,如果在任一種情況下都省略 @ 符號,npm 將嘗試從 GitHub 安裝;請參閱 npm install

要求範圍套件

由於範圍套件安裝到範圍資料夾中,因此你必須在程式碼中需要它們時包含範圍名稱,例如

require("@myorg/mypackage");

節點處理範圍資料夾的方式沒有什麼特別之處。這只要求在名為 @myorg 的資料夾中使用 mypackage 模組。

發布範圍套件

範圍套件可以從 npm@2 開始從 CLI 發布,並且可以發布到任何支援它們的註冊表,包括主要 npm 註冊表。

(截至 2015-04-19,且使用 npm 2.0 或更新版本,主要 npm 登錄檔確實支援範圍套件。)

如果您希望,可以將範圍與登錄檔關聯;請參閱下方說明。

發布公開範圍套件至主要 npm 註冊

在範圍中發布時,您有兩個選項

  • 發布到您的使用者範圍 (範例:@username/module)
  • 發布到組織範圍 (範例:@org/module)

如果要將公開模組發布到組織範圍,您必須先建立一個組織,其名稱為您要發布到的範圍名稱,或加入現有組織並取得適當的權限。例如,如果您要發布到 @org,您需要在 npmjs.com 上建立 org 組織,然後才能嘗試發布。

範圍套件預設為非公開。您需要在初始 npm publish 指令中指定 --access public。這會發布套件,並將存取權設定為 public,就像您在發布後執行 npm access public 一樣。在發布現有範圍套件的新版本時,您不需要執行此操作。

發布私人範圍套件至 npm 註冊

若要將私人範圍套件發布到 npm 登錄檔,您必須擁有 npm 私人模組 帳戶。

然後,您可以使用 npm publishnpm publish --access restricted 發布模組,它會出現在 npm 登錄檔中,並具有受限存取權。然後,您可以使用 npm access 或在 npmjs.com 網站上變更存取權限 (如果需要)。

將範圍與註冊關聯

範圍可以與個別登錄檔關聯。這讓您可以無縫使用來自主要 npm 登錄檔和一個或多個私人登錄檔的套件組合,例如 GitHub 套件 或開放原始碼 Verdaccio 專案。

您可以在登入時將範圍與登錄檔關聯,例如

npm login --registry=http://reg.example.com --scope=@myco

範圍與登錄之間的關係為多對一:一個登錄可以主機多個範圍,但一個範圍只會指向一個登錄。

你也可以使用 npm config 將範圍與登錄關聯起來

npm config set @myco:registry=http://reg.example.com

一旦範圍與登錄關聯起來,任何針對具有該範圍的套件的 npm install 都會從該登錄請求套件。任何包含該範圍的套件名稱的 npm publish 都會發佈到該登錄。

另請參閱