美文网首页
2024.04 读书笔记-前端架构师

2024.04 读书笔记-前端架构师

作者: wo不是黄蓉 | 来源:发表于2024-05-18 22:16 被阅读0次

    npm的安装机制

    • 检查config,获取npm配置,优先级顺序:项目的.npmrc>用户的.npmrc>全局的.npmrc>npm内置的.npmrc

    • 检查项目中是否存在package-lock.json,检查package-lock.json和package.json文件声明的版本是否一致

      • 一致,使用package-lock.json中的信息,从缓存或网络资源中加载依赖。
      • 不一致,根据Npm版本进行处理
    • 没有package-lock.json根据package.json文件递归构建依赖树,然后按照构建好的依赖书下载完整的依赖资源,在下载时会检查是否有相关缓存。

      • 有缓存,将缓存内容解压到node_modules
      • 没缓存,从Npm远程仓库下载包资源,检查包的完整性,并将其添加到缓存,同时解压到node_modules中
    • 最后生成package-lock.json

    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做了两件事

    • 为目标npm模块创建软链接,将其链接到全局的模块安装路径下
    • 为目标npm模块的可执行bin文件创建软链接,将其链接到全局node命令安装路径/user/local/bin/下

    npx

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

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

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

    部署私有镜像nexus、verdaccio、cnpm

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

    相关文章

      网友评论

          本文标题:2024.04 读书笔记-前端架构师

          本文链接:https://www.haomeiwen.com/subject/ngrgfjtx.html