npm i 是 npm 的一个命令,用于安装指定的模块和它们的依赖。
运行 npm i 命令之后,它会在当前目录下的 node_modules 文件夹中安装所有需要的依赖项及其子依赖项。如果 package.json 文件存在且包含了依赖列表,npm i 还会将所需的包版本号记录在 package.json 文件中。
初次执行 npm i 命令之后,会进行以下步骤:
- 检查 package.json 文件是否存在,如果不存在,则创建一个空的 package.json 文件;
- 解析 package.json 文件中的 dependencies 和 devDependencies 字段,确定需要安装的依赖项及版本号;
- 从 npm 服务器下载目标包和相关依赖,存储到本地的 node_modules 目录中;
- 如果依赖项中有其他依赖,npm 会递归下载安装它们;
- 安装完成后,npm 会将所有的依赖写入 package.json 文件中。
在已有的node_modules项目中执行npm i 命令之后,更新项目的node_modules的配置,会进行一下命令:
- 从项目package.lock.json中查看依赖版本的integrity属性,比对是否跟本地版本一致,
如果一致,就跳过这个包的安装如果不一致走2 - 参考package.json中包的版本,然后根据语义化版本更新机制,去下载合适的新版本
更新package.lock.json配置 - 如果依赖包的版本有更新,我们在新下载到的依赖包的package.json中会看到两个字段
from和id,from就标识我们项目文件中配置的包版本,id标识当前下载到的包版本
语义化版本不会跟新到大版本,需要手动更新 - npm i xxx@2.0.0 或者 npm i xxx@latest 会更新到大版本,同时修改项目package.json中的依赖包版本
- 项目中新安装到的依赖包版本,默认都会以^开头
- package.lock.json中会锁定项目依赖包中的依赖包的具体版本
由上可知,package.lock.json 是根据 package.json 生成的,所以当你更新依赖或者新加了某个依赖的时候,请务必记得提交package.json 文件!!!
通过执行 npm i 命令,可以方便地安装所需的依赖,避免手动下载和安装模块的繁琐操作。
原文链接:https://blog.csdn.net/xiaoxia_127/article/details/108380604