一尘不染

npm软件包上的“ at”(@)前缀是什么意思?

javascript

在Angular Component Router文档中,我偶然遇到了一个从未见过的npm命令,我不知道发生了什么:

npm install @angular/router --save

是什么意思@angular/router

整个字符串是包名吗?但是当我在npmjs.com上使用搜索时,我没有找到该软件包。而且,命令行搜索也不会返回任何此类包:

npm search @angular/router
:No match found for "@angular/router"

那么@angular/npm中的某种前缀机制呢?以及它如何运作?


阅读 1602

收藏
2020-04-25

共1个答案

一尘不染

这是NPM的一项新功能,称为“作用域软件包”,可有效地使NPM软件包具有名称空间。NPM上的每个用户和组织都有自己的范围,并且是唯一可以向其中添加软件包的人员。

这很有用,原因如下:

  • 它使组织可以明确哪些软件包是“官方”软件包,哪些软件包不是“官方”软件包。
    • 例如,如果一个包具有作用域@angular,则您知道它是由Angular核心团队发布的。
  • 程序包名称仅对于发布的范围是唯一的,而不是整个注册表。
    • 例如,包名称http已在主存储库中获取,但是Angular也可以使用@angular/http

其原因范围的包不要在公共场所搜索显示出来是因为他们中的很多都是通过NPM的支付服务组织创建的私有包,而且他们不舒服开放搜索,直到他们可以完全肯定他们是不是将会公开任何不应该公开的东西-
从法律的角度来看,这是可以理解的。

2020-04-25