Javascript “这是什么意思?”;at";(@)npm包上的前缀?

Javascript “这是什么意思?”;at";(@)npm包上的前缀?,javascript,angular,npm,Javascript,Angular,Npm,在游戏中,我无意中发现了一个我从未见过的npm命令,我不明白发生了什么: npm install @angular/router --save @angular/router的含义是什么 整个字符串是一个包名吗?但是,当我在上使用搜索时,我找不到该软件包。 命令行搜索也不会返回这样的包: npm search @angular/router :No match found for "@angular/router" 那么,@angular/是npm中的某种前缀机制吗?它是如何工作的?这是NP

在游戏中,我无意中发现了一个我从未见过的npm命令,我不明白发生了什么:

npm install @angular/router --save
@angular/router
的含义是什么

整个字符串是一个包名吗?但是,当我在上使用搜索时,我找不到该软件包。 命令行搜索也不会返回这样的包:

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

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

这是NPM的一个新特性,称为“作用域包”,它有效地允许NPM包被命名为命名空间。NPM上的每个用户和组织都有自己的范围,他们是唯一可以向其中添加包的人

这很有用,原因如下:

  • 它允许组织明确哪些软件包是“官方的”,哪些不是。
    • 例如,如果一个包的作用域为
      @angular
      ,那么您就知道它是由angular核心团队发布的
  • 包名称只需在其发布所在的范围内唯一,而不必在整个注册表中唯一。
    • 例如,包名
      http
      已经在主存储库中使用,但是Angular也可以使用
      @Angular/http
这是因为其中很多都是由使用NPM付费服务的组织创建的私人软件包,在完全确定不会公开任何不应该公开的内容之前,他们不愿意公开搜索——从法律角度看,这是可以理解的

有关详细信息,请参阅和


编辑:看来

npm上基本上有两种类型的模块,它们是-

  • 全局模块-这些模块遵循当前存在的命名约定。您
    需要('foo')
    ,这是一件非常令人高兴的事情。它们由一个或多个用户通过
    npm install XYZ
    命令拥有

  • 作用域模块-这些是在组织名称下“作用域”的新模块,该组织名称以
    @
    组织名称、斜杠和软件包名称开头,例如
    @someOrgScope/packagename
    。作用域是将相关包分组在一起的一种方式,它还影响npm处理包的方式

在npm install(npm安装)中,通过名称引用作用域包并在其前面加@-符号来安装该作用域包:

npm install @myorg/mypackage
另见


@根据其在npm包名称中的位置有不同的方法,即。 套餐是: a) 。包含由package.json文件描述的程序的文件夹

b) 。包含(A)的压缩焦油球

c) 。解析为(b)的url

d) 。使用(c)在注册表上发布的@

e) @这指向(d)

f) 。具有“最新”标签的A(e)

g) 。决定(A)的

npm安装[/]
是可选的。将从与指定作用域关联的注册表下载包。如果没有与给定范围关联的注册表,则假定默认注册表

注意:如果在作用域名称中不包含@-符号,npm将把它解释为GitHub存储库,请参见下文。作用域名称后面还必须跟一个斜杠

npm安装[/]@
安装指定标记引用的包的版本。如果该包的注册表数据中不存在该标记,则此操作将失败。 例如:

npm安装[/]@
安装包的指定版本。如果版本尚未发布到注册表,则此操作将失败。 例如:

npm安装[/]@
安装与指定版本范围匹配的软件包版本。 例如:


npm-install-packagename@“>=0.1.0=0.1.0
npm-help-scope
@trailingslash这是一个很好的答案!(不应该是评论。)
npm install packagename@latest
npm install @myorg/mypackage@latest
npm install packagename@0.1.1
npm install @myorg/privatepackage@1.5.0
npm install packagename@">=0.1.0 <0.2.0"
npm install @myorg/privatepackage@">=0.1.0 <0.2.0"