NPM-范围

NPM-范围

Scoped包

描述

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

@somescope/somepackagename

范围是一种将相关包分组在一起的方式,也会影响 npm 处理包的方式。

每个 npm 用户/组织都有自己的范围,只有您可以在范围中添加包。这意味着您不必担心有人在您之前提取您的包裹名称。因此,它也是向组织发送官方包装的好方法。

可以npm@2在主 npm 注册表中发布和安装范围包,并由其支持。无范围的包可以依赖于范围包,反之亦然。npm客户端与未注册的注册表向后兼容,因此它可以用于同时使用范围和未范围的注册表。

安装范围包

Scoped 软件包安装在常规安装文件夹的子文件夹中,例如,如果安装了其他软件包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')

Node处理范围文件夹的方式没有什么特别之处。这只需要mypackage命名文件夹中的模块@myorg

发布范围包

可以从 CLI 发布范围包,npm@2并且可以将其发布到支持它们的任何注册表,包括主要的npm 注册表。

(截至2015-04-19,使用 npm 2.0 或更高版本,主要的 npm 注册表 确实支持范围包。)

如果您愿意,您可以将范围与注册表相关联; 见下文。

将公共范围包发布到主npm注册表

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

将私有作用域包发布到npm注册表

要将私有作用域包发布到npm注册表,您必须具有 npm 专用模块帐户。

然后,您可以使用npm publishor 发布模块npm publish --access restricted,它将出现在 npm 注册表中,并具有受限访问权限。然后,您可以使用npm accessnpmjs.com网站或在 npmjs.com 网站上更改访问权限。

将范围与注册表相关联

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

您可以在登录时将范围与注册表相关联,例如

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

范围与注册管理机构具有多对一关系:一个注册管理机构可以托管多个范围,但范围仅指向一个注册管理机构。

您还可以使用npm config以下方式将范围与注册表相关联:

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

范围与注册表关联后,npm install具有该范围的包的任何内容都将从该注册表中请求包。任何 npm publish包含范围的包名称都将发布到该注册表。