看这样一条命令:
npm install @angular/router –save
这个 @angular/router 代表什么含意?
咱们应用上面的命令,无奈搜寻到这个包:
npm search @angular/router
:No match found for “@angular/router”
这是 NPM 的一个新个性,称为“作用域包”,它无效地容许 NPM 包被命名空间。NPM 上的每个用户和组织都有本人的范畴,他们是惟一能够向其中增加包的人。
这很有用,起因有几个:
- 它容许组织明确哪些软件包是“官网的”,哪些不是。
例如,如果一个包的范畴为 @angular,你就晓得它是由 Angular 外围团队公布的。 - 包名只须要在它公布的范畴内是惟一的,而不是整个注册表。
例如,主存储库中曾经采纳了包名称 http,但 Angular 也能够应用 @angular/http。
范畴包没有呈现在公共搜寻中的起因是因为它们中的很多是由应用 NPM 付费服务的组织创立的公有包,并且他们不违心关上搜寻,直到他们齐全确定他们不是将不应该公开的任何内容公开 – 从法律角度来看,这是能够了解的。
npm 上基本上有两种类型的模块,它们是:
(1) 全局模块 – 这些模块遵循当今存在的命名约定。您须要(’foo’)并且非常高兴。它们由一个或多集体通过 npm install XYZ 命令领有。
(2) 作用域模块 – 这些是在组织名称下“作用域”的新模块,该组织名称以 @ 组织名称、斜杠和包名结尾,例如 @someOrgScope/ 包名。作用域是将相干包组合在一起的一种形式,也会影响 npm 解决包的形式。
作用域包是通过在 npm install 中通过名称援用它来装置的,后面是 @-symbol:
npm install @myorg/mypackage
作用域是将相干包组合在一起的一种形式,也会影响 npm 解决包的形式。每个 npm 用户 / 组织都有本人的范畴,只有您能够在您的范畴内增加包。这意味着您不用放心有人在您之前拿走您的包裹名称。因而,这也是向组织收回官网软件包信号的好办法。
SAP Spartacus 也应用了大量的 scoped module,如下图所示: