目錄
範圍
選擇 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 publish
或 npm 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
都會發佈到該登錄。