刘勇虎的官方网站
网站内容包含大前端、服务器开发、Python开发、iOS开发、Android开发、网站维护等技术文章。专注于分享技术经验,职业心得体会,IT优秀文章与教程创作。
Stay hungry,Stay foolish,Stay young
所有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处理范围文件夹的方式没有什么特别的。这仅需要mypackage
名为的文件夹中的模块@myorg
。
范围包可以从CLI开始发布,npm@2
并且可以发布到支持它们的任何注册表,包括主要npm注册表。
(自2015年4月19日起,在npm 2.0或更高版本中,主要npm注册表 确实 支持作用域软件包。)
如果愿意,可以将范围与注册表关联。见下文。
要发布公共范围的程序包,必须指定--access public
初始发布。这将发布该程序包,并设置对public
您的访问权限,就好像您npm access public
在发布后运行该程序一样。
要将私有范围的程序包发布到npm注册表,您必须具有npm私有模块 帐户。
然后,您可以使用npm publish
或来发布该模块npm publish --access restricted
,并且该模块将出现在npm注册表中,并且具有受限访问权限。然后,您可以根据需要使用npm access
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
一个包含范围包名称将被发布到注册表来代替。