npm-scope Scoped packages

DESCRIPTION

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

@somescope/somepackagename

范围是将相关软件包组合在一起的一种方式,并且还会影响npm处理软件包的方式.

每个npm用户/组织都有自己的范围,只有您可以在自己的范围内添加软件包. 这意味着您不必担心有人会在您之前使用您的包裹名称. 因此,这也是向组织发出正式文件包的好方法.

有作用域的软件包可以从[email protected]发布和安装,并且受主要npm注册表支持. 无作用域的程序包可以取决于作用域程序包,反之亦然. npm客户端与无作用域的注册表向后兼容,因此它可以用于同时作用域和无作用域的注册表.

Installing scoped packages

范围内的软件包将安装到常规安装文件夹的子文件夹中,例如,如果其他软件包安装在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 .

Requiring scoped packages

由于将范围包安装在范围文件夹中,因此在代码中需要它们时,必须包括范围名称.

require('@myorg/mypackage')

Node处理范围文件夹的方式没有什么特别的. 这仅需要名为@myorg的文件夹中的mypackage模块.

Publishing scoped packages

可以从[email protected] ,从CLI发行范围包,并且可以将范围包发布到支持它们的任何注册表中,包括主要的npm注册表.

(自2015年4月19日起,在npm 2.0或更高版本中,主要npm注册表确实支持有作用域的程序包.)

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

Publishing public scoped packages to the primary npm registry

要发布公共范围的程序包,必须在初始发布中指定--access public . 这将发布该软件包并设置对public访问,就好像您在发布后运行了npm access public .

Publishing private scoped packages to the npm registry

要将私有范围的程序包发布到npm注册表,您必须具有npm私有模块帐户.

然后,您可以使用npm publishnpm publish --access restricted来发布模块,该模块将出现在npm注册表中,具有受限访问权限. 然后,您可以根据需要通过npm access或在npmjs.com网站上更改访问权限.

Associating a scope with a registry

范围可以与单独的注册表关联. 这使您可以无缝地混合使用主要npm注册表和一个或多个私有注册表(例如npm Enterprise)中的软件包.

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

npm login --registry=http://reg.example.com [email protected]

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

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

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

一旦将范围与注册表关联,则具有该范围的软件包的任何npm install都会从该注册表中请求软件包. 包含范围的程序包名称的所有npm publish都将发布到该注册表.

SEE ALSO


by  ICOPY.SITE