npm 包和模块简介

简介: npm 包和模块简介

1、关于公共npm注册表

公共npm注册表是JavaScript包的数据库,每个包都由软件和元数据组成。开源开发人员和公司的开发人员使用npm注册表向整个社区或其组织的成员贡献包,并下载包在自己的项目中使用。

2、关于包和模块

npm注册表包含包,其中许多也是Node模块,或者包含Node模块。

我们可以打开官网地址进行搜索对应的包或者模块。地址如下:

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包的可见性取决于包含包的作用域(命名空间),以及包的访问级别(私有或公有)设置。

注意:若要创建组织范围的包,必须首先创建组织。

公共注册表:

适用范围

访问级别

可以查看和下载

可写(发布)

组织

私人的

组织中对包具有读访问权限的团队成员

组织中对包具有读写访问权限的团队成员

组织

公众

所有人

组织中对包具有读写访问权限的团队成员

用户

私人的

包所有者和已被授予对包的读访问权限的用户

已被授予对包的读写访问权限的包所有者和用户

用户

公众

所有人

已被授予对包的读写访问权限的包所有者和用户

非作用域

公众

所有人

已被授予对包的读写访问权限的包所有者和用户

注意:只有用户帐户可以创建和管理未限定作用域的包。组织只能管理限定范围的包。


相关文章
|
1月前
|
JavaScript 前端开发 Java
npm学习一:npm 包管理工具 学习、使用。
这篇文章介绍了npm的基础知识和常用命令,包括安装包、查看包信息、管理依赖等操作,并提供了如何删除npm安装的镜像以及如何彻底删除node_modules文件夹的具体步骤。
74 2
|
1月前
|
JavaScript 前端开发 Java
npm学习一:npm 包管理工具 学习、使用。
这篇文章是关于npm包管理工具的学习、使用指南,包括npm概述、基础命令和如何安装webpack。
55 3
npm学习一:npm 包管理工具 学习、使用。
|
28天前
|
资源调度 前端开发 安全
前端实战:基于Verdaccio搭建私有npm仓库,轻松上传与下载自定义npm插件包
前端实战:基于Verdaccio搭建私有npm仓库,轻松上传与下载自定义npm插件包
64 0
|
2月前
|
数据安全/隐私保护
发布一个npm包
发布一个npm包
|
3月前
NPM——删除已发布的包
NPM——删除已发布的包
120 1
|
4月前
|
运维 Kubernetes Java
阿里云云效操作报错合集之npm包已经发布到了制品仓库,但流水线中拉取依赖时出现404错误,该如何排查
本合集将整理呈现用户在使用过程中遇到的报错及其对应的解决办法,包括但不限于账户权限设置错误、项目配置不正确、代码提交冲突、构建任务执行失败、测试环境异常、需求流转阻塞等问题。阿里云云效是一站式企业级研发协同和DevOps平台,为企业提供从需求规划、开发、测试、发布到运维、运营的全流程端到端服务和工具支撑,致力于提升企业的研发效能和创新能力。
阿里云云效操作报错合集之npm包已经发布到了制品仓库,但流水线中拉取依赖时出现404错误,该如何排查
|
3月前
|
JavaScript 前端开发 开发者
从零到一:教你如何发布自己的npm插件包
从零到一:教你如何发布自己的npm插件包
|
3月前
|
JavaScript
GitHub——自动发布NPM包
GitHub——自动发布NPM包
22 0
|
4月前
|
JavaScript 测试技术
npm发布自己的插件包
npm发布自己的插件包
|
4月前
|
JavaScript 开发工具 数据安全/隐私保护
npm包【详解】(内含npm包的开发、发布、安装、更新、搜索、卸载、查看、版本号更新规则、package.json详解等)
npm包【详解】(内含npm包的开发、发布、安装、更新、搜索、卸载、查看、版本号更新规则、package.json详解等)
103 0