npm 范圍 Scope

2021-10-29 10:52 更新

描述

所有 npm 包都有一個名稱。一些包名也有作用域。范圍遵循包名稱的通常規(guī)則(URL 安全字符,沒有前導(dǎo)點或下劃線)。在包名中使用時,范圍以@符號開頭,后跟斜杠,例如

@somescope/somepackagename

作用域是將相關(guān)包組合在一起的一種方式,也會影響 npm 處理包的方式。 每個 npm 用戶/組織都有自己的范圍,只有您可以在您的范圍內(nèi)添加包。這意味著您不必?fù)?dān)心有人在您之前使用您的包裹名稱。因此,這也是向組織發(fā)出官方軟件包信號的好方法。 作用域包可以npm@2從主 npm 注冊表開始發(fā)布和安裝,并受主 npm 注冊表的支持。無作用域的包可以依賴作用域的包,反之亦然。npm 客戶端向后兼容無作用域的注冊表,因此它可用于同時處理作用域和無作用域的注冊表。

安裝作用域包

作用域包安裝到常規(guī)安裝文件夾的子文件夾中,例如,如果您的其他軟件包安裝在node_modules/packagename,作用域模塊將安裝在node_modules/@myorg/packagename.?范圍文件夾 (?@myorg) 只是以@符號開頭的范圍名稱,可以包含任意數(shù)量的范圍包。 作用域包是通過按名稱引用它來安裝的,前面是一個?@符號,在npm install

npm install @myorg/mypackage 

或在package.json

“dependence” :{ 
  “@myorg/mypackage” :“^1.3.0” 
}

請注意,如果@省略符號,無論哪種情況,npm 都會嘗試從 GitHub 安裝;見npm install。

需要作用域包

因為作用域包安裝在作用域文件夾中,所以在代碼中需要它們時必須包含作用域的名稱,例如

需要('@myorg/mypackage' )

Node 處理范圍文件夾的方式?jīng)]有什么特別之處。這僅需要mypackage名為@myorg.

發(fā)布范圍包

范圍包可以從 CLI 發(fā)布npm@2,也可以發(fā)布到任何支持它們的注冊表,包括主 npm 注冊表。 (截至 2015 年 4 月 19 日,使用 npm 2.0 或更高版本,主 npm 注冊表?確實支持作用域包。) 如果您愿意,您可以將范圍與注冊表相關(guān)聯(lián);見下文。

將公共范圍的包發(fā)布到主 npm 注冊表 要發(fā)布公共范圍的包,您必須指定--access public初始發(fā)布。這將發(fā)布包并設(shè)置訪問權(quán)限,public就像您npm access public在發(fā)布后運行一樣。

將私有范圍的包發(fā)布到 npm 注冊表 要將私有范圍的包發(fā)布到 npm 注冊表,您必須擁有一個npm 私有模塊?帳戶。 然后,您可以使用npm publish或發(fā)布模塊npm publish --access restricted,它會出現(xiàn)在 npm 注冊表中,訪問受限。然后,您可以根據(jù)需要npm access通過 npmjs.com 網(wǎng)站或在 npmjs.com 網(wǎng)站上更改訪問權(quán)限。

將作用域與注冊表相關(guān)聯(lián)

范圍可以與單獨的注冊表相關(guān)聯(lián)。這允許您無縫地使用來自主 npm 注冊表和一個或多個私有注冊表(例如 npm Enterprise)的包的組合。 您可以在登錄時將范圍與注冊表關(guān)聯(lián),例如

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

作用域與注冊中心是多對一的關(guān)系:一個注冊中心可以承載多個作用域,但一個作用域只能指向一個注冊中心。 您還可以使用npm config以下方法將范圍與注冊表相關(guān)聯(lián):

npm配置集@myco:registry http://reg.example.com

一旦作用域與注冊表相關(guān)聯(lián),任何npm install具有該作用域的包都會改為從該注冊表請求包。任何?npm publish包含范圍的包名稱都將發(fā)布到該注冊表。

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號