2024.04 读书笔记-前端架构师

2024-05-18  本文已影响0人  wo不是黄蓉

npm的安装机制

npm缓存机制

npm config get cache

缓存数据存在哪儿?_cacache

image-20240519213108435.png image-20240519213137550.png

content-v2 存的二进制文件->npm包资源

index-v5 存放一些描述性文件

其他资料 https://www.pipipi.net/27022.html

npm是如何被存储并被利用的呢

当npm执行时,会通过pacote将相应的包资源解压在对应的node_modules下面。

npm下载时会先将依赖下载到缓存中,再将其压缩到项目的node_modules下。

pacote依赖npm-registry-fetch来下载包资源,npm -registry-fetch可以通过设置cache属性在给定的路径下生成缓存数据

在每次安装资源时,根据package-lock.josn中存储的integrity,version,name信息生成一个唯一的key,这个key能对应到index-v5下的缓存记录。如果发现有缓存记录,就会找到tar包的hash值,根据hash值知道缓存的tar包,并再次通过pacote将对应的二进制文件解压到相应的项目node_modules下,省去网络下载资源时间。(v5版本之后的缓存策略)

npm link/unlink(本质是软连接)

包目录设置npm link,使用包地方设置npm link package-name

npm link做了两件事

npx

解决使用npm时面临的快速开发、调试以及在项目内使用全局模块的问题。

npx执行的是node_modules/.bin下的文件,运行命令时可以自动取node_modules/.bin路径和环境变量里面检查命令是否存在,不需要再package.json中定义script。

npx在执行模块时会优先安装依赖,在安装成功后便删除此依赖。避免了全局安装带来的问题。

部署私有镜像nexus、verdaccio、cnpm

nexus在客户端和外部npm之间,通过group repository合并Npm仓库及私有仓库,这样就起到了代理转发的作用。

上一篇 下一篇

猜你喜欢

热点阅读