阅读(1401) (15)

npm 范围 Scope

2021-09-07 11:33:12 更新

描述

所有 npm 包都有一个名称。一些包名也有作用域。范围遵循包名称的通常规则(URL 安全字符,没有前导点或下划线)。在包名中使用时,范围以@符号开头,后跟斜杠,例如

@somescope/somepackagename

作用域是将相关包组合在一起的一种方式,也会影响 npm 处理包的方式。 每个 npm 用户/组织都有自己的范围,只有您可以在您的范围内添加包。这意味着您不必担心有人在您之前使用您的包裹名称。因此,这也是向组织发出官方软件包信号的好方法。 作用域包可以npm@2从主 npm 注册表开始发布和安装,并受主 npm 注册表的支持。无作用域的包可以依赖作用域的包,反之亦然。npm 客户端向后兼容无作用域的注册表,因此它可用于同时处理作用域和无作用域的注册表。

安装作用域包

作用域包安装到常规安装文件夹的子文件夹中,例如,如果您的其他软件包安装在node_modules/packagename,作用域模块将安装在node_modules/@myorg/packagename. 范围文件夹 ( @myorg) 只是以@符号开头的范围名称,可以包含任意数量的范围包。 作用域包是通过按名称引用它来安装的,前面是一个 @符号,在npm install

npm install @myorg/mypackage 

或在package.json

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

请注意,如果@省略符号,无论哪种情况,npm 都会尝试从 GitHub 安装;见npm install

需要作用域包

因为作用域包安装在作用域文件夹中,所以在代码中需要它们时必须包含作用域的名称,例如

需要('@myorg/mypackage' )

Node 处理范围文件夹的方式没有什么特别之处。这仅需要mypackage名为@myorg.

发布范围包

范围包可以从 CLI 发布npm@2,也可以发布到任何支持它们的注册表,包括主 npm 注册表。 (截至 2015 年 4 月 19 日,使用 npm 2.0 或更高版本,主 npm 注册表 确实支持作用域包。) 如果您愿意,您可以将范围与注册表相关联;见下文。

将公共范围的包发布到主 npm 注册表 要发布公共范围的包,您必须指定--access public初始发布。这将发布包并设置访问权限,public就像您npm access public在发布后运行一样。

将私有范围的包发布到 npm 注册表 要将私有范围的包发布到 npm 注册表,您必须拥有一个npm 私有模块 帐户。 然后,您可以使用npm publish或发布模块npm publish --access restricted,它会出现在 npm 注册表中,访问受限。然后,您可以根据需要npm access通过 npmjs.com 网站或在 npmjs.com 网站上更改访问权限。

将作用域与注册表相关联

范围可以与单独的注册表相关联。这允许您无缝地使用来自主 npm 注册表和一个或多个私有注册表(例如 npm Enterprise)的包的组合。 您可以在登录时将范围与注册表关联,例如

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

作用域与注册中心是多对一的关系:一个注册中心可以承载多个作用域,但一个作用域只能指向一个注册中心。 您还可以使用npm config以下方法将范围与注册表相关联:

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

一旦作用域与注册表相关联,任何npm install具有该作用域的包都会改为从该注册表请求包。任何 npm publish包含范围的包名称都将发布到该注册表。