npm 范围 Scope
描述
所有 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
包含范围的包名称都将发布到该注册表。