scope

范围包

描述

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

@somescope/somepackagename

范围是一种将相关包组合在一起的方式,也影响 npm 处理包的方式的一些事情。

每个 npm 用户/组织都有自己的范围,只有你可以在你的范围内添加包。 这意味着你不必担心有人抢先你的包名称。 因此,这也是向组织发出官方包信号的好方法。

范围包可以从 npm@2 开始发布和安装,并且受主 npm 注册表支持。 无范围包可以依赖于范围包,反之亦然。 npm 客户端向后兼容无范围注册表,因此它可以同时用于作用域和无范围注册表。

安装范围包

范围包安装到常规安装文件夹的子文件夹,例如如果你的其他包安装在 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 处理作用域文件夹的方式并没有什么特别之处。 这仅需要名为 @myorg 的文件夹中的 mypackage 模块。

发布范围包

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

(截至 2015 年 4 月 19 日,使用 npm 2.0 或更高版本,主要的 npm 注册表 does 支持范围包。)

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

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

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

将私有范围包发布到 npm 注册表

要将私有范围包发布到 npm 注册表,你必须拥有 npm 私有模块 账户。

然后,你可以使用 npm publishnpm publish --access restricted 发布模块,它将出现在 npm 注册表中,但访问受限。 然后,如果需要,你可以使用 npm access 或在 npmjs.com 网站上更改访问权限。

将范围与注册表关联

范围可以与单独的注册表相关联。 这使你可以无缝地混合使用来自主要 npm 注册表和一个或多个私有注册表(例如 GitHub Packages 或开源 Verdaccio 项目)的包。

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

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

范围与注册表具有多对一的关系: 一个注册表可以托管多个范围,但一个范围只能指向一个注册表。

你还可以使用 npm config 将范围与注册表关联:

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

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

也可以看看

npm 中文网 - 粤ICP备13048890号