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