了解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
也可以看看