jba*_*ndi 218 javascript npm angular
在Angular Component Router文档中,我偶然发现了一个我从未见过的npm命令,我不明白发生了什么:
npm install @angular/router --save
Run Code Online (Sandbox Code Playgroud)
是什么意思@angular/router?
整个字符串是包名吗?但是当我在npmjs.com上使用搜索时,我找不到那个包.并且命令行搜索确实没有返回这样的包:
npm search @angular/router
:No match found for "@angular/router"
Run Code Online (Sandbox Code Playgroud)
那么@angular/npm中的某种前缀机制呢?它是如何工作的?
Joe*_*lay 234
这是NPM的一个新功能,称为"范围包",它有效地允许NPM包命名.NPM上的每个用户和组织都有自己的范围,他们是唯一可以向其添加包的人.
由于以下几个原因,这很有用:
@angular,您知道它是由Angular核心团队发布的.http已经在主存储库中获取,但Angular也可以拥有@angular/http.在公共搜索中没有显示范围包的原因是因为它们中的很多是由使用NPM的付费服务的组织创建的私有包,并且他们不习惯打开搜索直到他们完全确定他们不是要做一些不公开的公开 - 从法律角度来看,这是可以理解的.
编辑:看起来公共范围的包现在在搜索中正确显示!
Par*_*ain 53
基本上有两种类型的npm模块 -
全局模块 - 这些模块遵循当前存在的命名约定.你require('foo')和那里有很多欢乐.它们由一个或多个人通过npm install XYZ命令拥有.
Scoped模块 - 这些是在组织名称下"作用域"的新模块,@以一个斜杠开头,后面跟一个斜杠,例如@someOrgScope/packagename.范围是一种将相关包分组在一起的方式,也会影响npm处理包的方式.
在npm install中通过名称引用它来安装作用域软件包,前面是@ -symbol:
npm install @myorg/mypackage
Run Code Online (Sandbox Code Playgroud)
也可以看看
什么是范围模块。
所有 npm 包都有一个名称,并且这些名称应该是唯一的。作用域 npm 包遵循与其他 npm 包名称相同的规则(URL 安全字符、下划线或无前导点)。当在包名称中使用时,范围前面有一个@符号,后面有一个斜杠/,例如
@somescope/somepackagename
Run Code Online (Sandbox Code Playgroud)
npm 作用域模块通常将相关的 npm 包分组在一起。当您注册 npm 用户帐户或创建组织时。每个 npm 用户/组织都有自己的范围,只有他们和他们的员工才能在您的范围中添加包。通常,您会被授予与您的用户或组织名称匹配的范围。您可以将此范围用作相关包的命名空间。
作为 npm 用户,您不必担心有人抢在您之前使用您的包名称。因此,使用范围模块也是组织组织 npm 包的好方法。
使用作用域包的优点:
通常,组织选择将其范围包保密,并且由于各种原因它们不会出现在公共搜索中。
@ 根据它在 npm 包名中的位置有不同的含义,即包是:a)。包含 package.json 文件描述的程序的文件夹
b)。包含 (a) 的 gzip 压缩包
C)。解析为 (b) 的网址
d)。使用 (c) 在注册表上发布的 @
e)。@ 指向 (d)
F)。A 具有满足 (e) 的“最新”标签
G)。A 解析为 (a)
npm install [<@scope>/]<name>
<scope>是可选的。该包将从与指定范围关联的注册表中下载。如果没有注册表与给定范围相关联,则假定为默认注册表
注意:如果您的范围名称中没有包含 @-symbol,npm 会将其解释为 GitHub 存储库,请参见下文。范围名称也必须后跟斜杠。
npm install [<@scope>/] <名称>@<标签>
安装指定标签引用的包版本。如果该标记在该包的注册表数据中不存在,则此操作将失败。例子:
npm install packagename@latest
npm install @myorg/mypackage@latest
Run Code Online (Sandbox Code Playgroud)
npm install [<@scope>/]<name>@<version>
安装指定版本的包。如果版本尚未发布到注册表,这将失败。例子:
npm install packagename@0.1.1
npm install @myorg/privatepackage@1.5.0
Run Code Online (Sandbox Code Playgroud)
npm install [<@scope>/]<名称>@<版本范围>
安装与指定版本范围匹配的软件包版本。例子:
npm install packagename@">=0.1.0 <0.2.0"
npm install @myorg/privatepackage@">=0.1.0 <0.2.0"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
27075 次 |
| 最近记录: |