了解npm package @ -prefix:@ angular / router

在Angular组件路由器文档中,我偶然发现了一个我从未见过的npm命令,我不明白是怎么回事:

npm install @angular/router --save 

@angular/router是什么意思?

整个string是一个包名吗? 但是当我在npmjs.com上使用search时,我没有find这个包。 而且命令行search也没有返回这样的包:

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

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

这是NPM的一个新function,称为“范围包”。 它们有效地允许NPM包被命名空间 – 任何以@angular/开头的包将被分组到@angular中的@angular文件夹中。

范围性软件包不能在公共search中显示的原因是很多软件包是由使用NPM付费服务的组织创build的私有软件包,他们不能很好地打开search,直到完全确定它们不是要公开任何不公开的内容 – 从法律的angular度来看,这是非常可以理解的。

有关更多信息,请参阅npm文档或angular度文档

基本上有两种types的NPM模块,

  • 全局模块 – 这些模块遵循现在存在的命名约定。 你require('foo')并有很多欢乐。 他们通过npm XYZ命令由一个或多个人拥有。

  • 作用域模块 – 这些新模块是以组织名称开头的“范围”,以@开头,后面跟着一个斜杠,例如@somescope/somepackagename 。 范围是将相关的软件包分组在一起的一种方法,也影响npm处理软件包的方式。

范围包是通过在npm install中以名称引用安装的,在@之前加上@ -symbol:

 npm install @myorg/mypackage 

也可以看看