Node包管理更新机制

前言

简单点来说,Node 包管理更新机制指的就是 npmnode package manager)更新机制。

今天也不讲什么是 npm ,以及 npm 的使用方法,来讲讲 npm 中的包更新管理机制。

Npm install && Npm update

Npm install

先从 npm install 说起。

npm install <packageName>

这个命令能够在当前项目中,给你加入你需要的程序包。

但是为什么能够给你在当前项目中引入程序包呢?以及是怎么给你添加进来的。

Npm install安装流程

安装之前,npm 先会检查,当前项目中的 node_module 中是否已经存在制定模块,如果存在,就算本地版本不是最新的,npm 也不会重新安装了。(强制安装可以添加 --force 参数)

注意: 这个地方就是为什么,我们常说在修改了package.json后如果发现没有更新,删除当前 node_module后在执行install的原因所在,如果本地已经存在,会直接跳过安装。

Npm update

在修改完 package.json配置文件后,可以采用 npm update 来更新需要更新的包。

npm update <packageName>

这个命令会先去远程仓库查询当前包的最新版本,然后查询本地的版本,如果本地不存在,或者远程有更新,那么就会重新安装这个包。

Registry

npm update 通过 npm 的查询服务(registry 服务),会去调起一个请求,去查询当前需要更新的包的,然后返回的对象中会包含很多信息(下载地址、版本号、包大小等等)

注意: 想要详细查看这块的内容,请见https://docs.npmjs.com/cli/v7/using-npm/registry

缓存

我们通过npm install 或者 npm update 下载来的内容并不是直接放入node_module中的,通过registry去下载的压缩包,都先会存放在本地的缓存目录。

这个缓存目录,在 Linux 或 Mac 默认是用户主

目录下的.npm目录,在 Windows 默认是%AppData%/npm-cache。通过配置命令,可以查看这个目录的具体位置。

你会看到里面存放着大量的模块,储存结构是{cache}/{name}/{version}

每个模块的每个版本,都有一个自己的子目录,里面是代码的压缩包package.tgz文件,以及一个描述文件package/package.json

注意: 详细关于缓存的内容,请见https://docs.npmjs.com/cli/v7/commands/npm-cache

对于一些不是很关键的操作(比如npm searchnpm view),npm会先查看.cache.json里面的模块最近更新时间,跟当前时间的差距,是不是在可接受的范围之内。如果是的,就不再向远程仓库发出请求,而是直接返回.cache.json的数据。

流程总结

我们现在了解了上面的信息后,我们再来看看更新机制。

基本上模块安装的流程为如下几个方式:

  • 发出 npm install 命令

  • 检查当前项目中的 node_module 中是否包需要的包

  • npmregistry 查询模块压缩包的网址

  • 下载压缩包,存放在 ~/.npm 目录

  • 解压压缩包到当前项目的 node_modules 目录

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值