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 publish
or 发布模块npm publish --access restricted
,它将出现在 npm 注册表中,并具有受限访问权限。然后,您可以使用npm access
npmjs.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
包含范围的包名称都将发布到该注册表。