npm 范圍 Scope

2021-10-29 10:52 更新

描述

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

@somescope/somepackagename

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

安裝作用域包

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

npm install @myorg/mypackage 

或在package.json

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

請(qǐng)注意,如果@省略符號(hào),無(wú)論哪種情況,npm 都會(huì)嘗試從 GitHub 安裝;見(jiàn)npm install。

需要作用域包

因?yàn)樽饔糜虬惭b在作用域文件夾中,所以在代碼中需要它們時(shí)必須包含作用域的名稱,例如

需要('@myorg/mypackage' )

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

發(fā)布范圍包

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

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

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

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

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

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

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

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

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

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

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)