目录
1、关于公共npm注册表
2、关于包和模块
2.1、关于包
2.2、关于包格式
2.3、npm包git URL格式
2.4、关于模块
3、关于范围
3.1、作用域和包的可见性
4、关于公共软件包
5、关于私有包
6、npm包范围、访问级别和可见性
1、关于公共npm注册表
公共npm注册表是JavaScript包的数据库,每个包都由软件和元数据组成。开源开发人员和公司的开发人员使用npm注册表向整个社区或其组织的成员贡献包,并下载包在自己的项目中使用。
2、关于包和模块
npm注册表包含包,其中许多也是Node模块,或者包含Node模块。
我们可以打开官网地址进行搜索对应的包或者模块。地址如下:npmhttps://www.npmjs.com/
2.1、关于包
包是由package.json文件描述的文件或目录。一个包必须包含一个package.json文件才能发布到npm注册表。
包可以是无作用域的,也可以是对用户或组织有作用域的,有作用域的包可以是私有的,也可以是公共的。
2.2、关于包格式
包是以下任何一种:
(a) 包含由package.json文件描述的程序的文件夹。
(b) 包含(a)的gzip压缩包。
(c) 解析为(B)的URL
(d)与(c
)一起在注册表上发布的
<name>@<version>
(e) 指向(d)的<name>@<tag>。
(f) 具有满足(e)的<name>标签的latest。
(g) 一个git url,当克隆时,会包含(a)
2.3、npm包git URL格式
用于npm包的Git URL可以通过以下方式格式化:
- git://github.com/user/project.git#commit-ish
- git+ssh://user@hostname:project.git#commit-ish
- git+http://user@hostname/project/blah.git#commit-ish
- git+https://user@hostname/project/blah.git#commit-ish
commit-ish可以是任何标记、sha或分支,可以作为 git checkout的参数。默认的commit-ish是master。
2.4、关于模块
模块是node_modules目录中可以由Node.jsrequire()函数加载的任何文件或目录。
要被Node.js require()函数加载,模块必须是以下之一:
- 包含package.json文件的文件夹,该文件包含"main"字段。
- 一个JavaScript文件
注意:由于模块不需要有package.json文件,因此并非所有模块都是包。只有具有package.json文件的模块也是包
在Node程序的上下文中,module也是 是从一个文件中加载的。例如,在以下程序中:
var req = require('request')
以上是变量req引用了request模块”。
3、关于范围
必须使用npm版本2或更高版本才能使用作用域。若要升级到最新版本的npm,请在命令行上运行
npm install npm@latest -g
当您注册npm用户帐户或创建组织时,您将被授予与您的用户或组织名称匹配的范围。您可以将此范围用作相关包的命名空间。
作用域允许您创建一个与其他用户或组织创建的包同名的包,而不会发生冲突。
当在package.json文件中作为依赖项列出时,作用域包前面会加上它们的作用域名称。作用域名称是@和斜杠之间的所有内容:
示例:
@npm/package-name
范围是npm
@npmcorp/package-name
范围是npmcorp
3.1、作用域和包的可见性
-
无作用域的包始终是公共的。
- 私有包始终是有作用域的。
- 默认情况下,作用域包是私有的;发布时必须传递命令行标志以使其公开。
4、关于公共软件包
作为npm用户或组织成员,您可以创建和发布公共包,任何人都可以下载并在自己的项目中使用。
- 无作用域的公共包存在于全局公共注册表命名空间中,并且可以仅使用包名称在package.json文件中引用:package-name.
- 作用域的公共包属于用户或组织,并且在作为依赖项包含在 package.json file: 文件:
@username/package-name
@org-name/package-name
5、关于私有包
要使用私有包,必须:
1、使用npm 2.7.0或更高版本。要升级,请在命令行上运行
npm install npm@latest -g
2、拥有付费用户或组织帐户
使用npm私有包,您可以使用npm注册表来托管仅对您和选定的协作者可见的代码,允许您在项目中管理和使用私有代码以及公共代码。
私有包总是有一个作用域,有作用域的包默认是私有的。
用户范围的私有包只能由您和您授予读或读/写访问权限的协作者访问。
组织范围内的私有包只能由被授予读或读/写访问权限的团队访问。
6、npm包范围、访问级别和可见性
npm包的可见性取决于包含包的作用域(命名空间),以及包的访问级别(私有或公有)设置。
注意:若要创建组织范围的包,必须首先创建组织。
公共注册表:
适用范围 | 访问级别 | 可以查看和下载 | 可写(发布) |
组织 | 私人的 | 组织中对包具有读访问权限的团队成员 | 组织中对包具有读写访问权限的团队成员 |
组织 | 公众 | 所有人 | 组织中对包具有读写访问权限的团队成员 |
用户 | 私人的 | 包所有者和已被授予对包的读访问权限的用户 | 已被授予对包的读写访问权限的包所有者和用户 |
用户 | 公众 | 所有人 | 已被授予对包的读写访问权限的包所有者和用户 |
非作用域 | 公众 | 所有人 | 已被授予对包的读写访问权限的包所有者和用户 |
注意:只有用户帐户可以创建和管理未限定作用域的包。组织只能管理限定范围的包。