1. 前言
- 之前有篇文章package.json 和 package-lock.json区别
- 但好像对于 npm的模块机制,比如为什么输入 npm install 就可以自动安装对应的模块 还是挺好奇的,那就写写呗
2. 是什么 what
- npm 是 Node.js 的包管理工具,用于安装、管理和发布 JavaScript 包
3. 执行 npm install命令时的运行步骤
1. 解析依赖关系:
- npm 会读取项目根目录下的
package.json
文件,该文件描述了项目所依赖的模块以及版本范围。- npm 解析 package.json 文件中的依赖关系,并确定需要安装的模块
2. 查询node_modules目录之中是否已经存在指定模块
- npm 向 registry 查询模块压缩包的网址
3. 下载模块
4. 安装模块
- 下载压缩包,存放在根目录下的
.npm
目录里- 解压压缩包到当前项目的
node_modules
目录,按照模块的层级结构进行组织。- 执行模块的安装脚本(如果有定义),例如执行模块的
postinstall
脚本
- 若存在,不再重新安装
5. 处理依赖关系:
- 如果安装的模块本身也有依赖其他模块,npm 会递归处理这些依赖关系,重复步骤 3/下载 和步骤 4/安装,直到所有的依赖模块都被安装
- 总结
输入 npm install 命令会触发 npm 的自动安装机制,根据 package.json 文件中的依赖关系,下载对应的模块并安装到项目的 node_modules 目录下。这样,你就能在项目中直接引用这些模块,并使用其提供的功能