当前位置: 首页 > 后端技术 > Node.js

对Node.js作用域模块的一些理解

时间:2023-04-04 01:31:28 Node.js

看这个命令:npminstall@angular/router--save这个@angular/router是什么意思?我们无法使用以下命令搜索此包:npmsearch@angular/router:找不到“@angular/router”的匹配项这是NPM的一个新功能,称为“ScopedPackages”,它有效地允许NPM包被命名空间。NPM上的每个用户和组织都有自己的范围,并且他们是唯一可以向其中添加包的人。这很有用,原因有几个:它允许组织明确哪些包是“官方”的,哪些不是。例如,如果一个包有@angular作用域,你就知道它是由Angular核心团队发布的。包名称只需要在它发布的范围内是唯一的,而不是整个注册表。比如主仓库已经采用了包名http,但是Angular也可以使用@angular/http。scoped包没有出现在公共搜索中的原因是因为它们中有很多是由使用NPM付费服务的组织创建的私有包,并且他们不愿意打开搜索,直到他们完全确定他们没有制作任何不应该公开的东西——从法律的角度来看,这是可以理解的。npm上基本上有两种类型的模块,它们是:(1)全局模块——这些模块遵循当今存在的命名约定。你需要('foo')并且非常开心。它们由一个或多个人通过npminstallXYZ命令拥有。(2)Scopedmodules-这些是在以@organizationname、斜杠和包名称开头的组织名称下“作用域”的新模块,例如@someOrgScope/packagename。作用域是将相关包分组在一起的一种方式,也会影响npm处理包的方式。通过在npminstall中按名称引用它来安装作用域包,前面有@-符号:npminstall@myorg/mypackage作用域是一种将相关包分组在一起的方式,也会影响npm处理包的方式。每个npm用户/组织都有自己的范围,只有您可以在您的范围内添加包。这意味着您不必担心有人在您之前使用您的包裹名称。因此,这也是向组织发出官方包信号的好方法。SAPSpartacus也使用了大量的scopedmodules,如下图所示: