作者:藤椒金汤力链接:https://juejin.cn/post/7245201923506094140来源:稀土掘金著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

这篇文章主要是对 npm 的深入解析,2010 年 1 月,一款名为 npm 的包管理器诞生,时至今日,npm 已经从前端领域最早、而且最初只是为 Node.js 设计的包管理器演变成目前最大、生态最为健全的现代包管理工具。

那么,他的架构是什么呢?他的嵌套结构是如何发生的呢?他的缓存机制是什么呢?在执行 npm install 的过程中又发生了什么呢?这里对它的架构及npm install 包安装原理进行一个深入解析。

npm 架构分析

一、npm 整体结构

官方文档中,npm 包含 3 个组成部分:

具体如下图所示:

image.png

从产品功能看,npm 包括 npm 网站、npm 源和 npm CLI 三个部分;从软件架构看,npm 又可以分为客户端和服务端两块。

二、npm 源

npm 源可以大致分为官方源、镜像源和私有源三种。对应的 npm 网站为官方网站、镜像网站和私有网站。不同的 npm 源的路径是相同的,域名是不同的,所以一般用域名来指代某个特定的 npm 源。通过配置 registry 选项为各种 npm 源域名,npm cli 可以在不同的 npm 源之间无缝切换。

三种源之间的关系如下: