npm、yarn和pnpm

这篇具有很好参考价值的文章主要介绍了npm、yarn和pnpm。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1 node_modules安装方式

在npm@3之前是以嵌套结构方式安装依赖包,存在两个问题:

  • 依赖路径太长
  • 多个包依赖一个相同包时,本地磁盘会存储多个相同的包

npm@3和yarn使用扁平化结构,node_modules变成所有包放在同一层级

注意:多个版本的包只有一个会被提升至顶层,其他版本的包会嵌套安装到各自依赖中
npm、yarn和pnpm,npm,npm,前端,node.js
哪个版本的包被提升依赖于package.json中包的前后顺序,于是又会出现新的问题:
依赖结构不一致导致扁平化后的结果也不一致

于是出现package-lock.jsonyarn.lock保证install后产生确定的依赖结构

幽灵依赖:是指在package.json中未定义的依赖,但在项目中依然可以正确被引用到

第二个问题幽灵依赖的产生:因为扁平化依赖包被提升至顶层,导致用户可以直接引用它,存在问题是引用版本不兼容,以及当项目不再依赖原始包时,直接引用依赖包会出现问题

第三个问题是:依赖分身和依赖提升机制可能导致大量依赖被重复安装,以下示例无论提升B@1.0还是B@2.0都会存在重复版本包被安装
npm、yarn和pnpm,npm,npm,前端,node.js

2 yarn解决了上面哪些问题?

  • 提升安装速度:npm安装包时是串行的,每个包按照顺序安装;yarn采用并行操作。在缓存中,yarn会将每个包缓存在磁盘上
  • 使用yarn.lock记录依赖信息,保证得到稳定的依赖结构

注意:没有解决幽灵依赖和依赖分身问题

3 pnpm如何解决上述问题?

内存寻址存储策略:将包安装在系统的全局存储中,依赖的每个版本只会安装一次,在引用依赖时,会通过硬链接和软链接找到该文件,为实现此过程,node_modules下会出现.pnpm目录

  • 硬链接:使用户可以通过路径查找到全局存储中的源文件
  • 软链接:通过它可以找到对应磁盘目录下的依赖地址

(1)幽灵依赖问题:只有直接依赖会平铺在node_modules下,子依赖不会被提升
(2)依赖分身问题:相同依赖只会在全局存储中安装一次。

弊端文章来源地址https://www.toymoban.com/news/detail-667379.html

  • pnpm创建的node_modules依赖于软链接,在不支持软链接的环境中无法使用,例如:Electron
  • 依赖源文件安装在全局存储中,调试依赖或给依赖打补丁不方便

到了这里,关于npm、yarn和pnpm的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 前端环境的安装 Node npm yarn

    1.下载NodeJS安装包 下载地址:Download | Node.js 2.开始安装 打开安装包后,一直Next即可。当然,建议还是修改一下安装位置,NodeJS默认安装位置为  C:Program Files 3.验证是否安装成功 打开DOS命令界面: node -v   出现NodeJS版本即为安装成功! npm -v    出现npm的版本号说明npm工具也

    2024年02月06日
    浏览(71)
  • nvm, node.js, npm, yarn 安装配置

    nvm 是一个 node.js 管理工具,可以快捷下载安装使用多个版本的node.js linux 命令行输入: 卸载: 删除 ~/.bashrc 文件中的 windows 点击 github 链接 windows-releases, 下载下方红框中的exe文件安装即可 卸载找到安装目录中的uninstall文件即可 node.js 是 js 文件的运行环境 linux windows npm, yarn

    2024年01月20日
    浏览(65)
  • Pnpm,npm,yarn

    npm   最初的npm只是简单的通过依赖去递归安装包,所以说每个依赖都会有自己的node_modules,node_modules是嵌套的。一个项目会存在多个包,多个包之间难免会有公共的依赖,node_modules嵌套的话,这样公共依赖就会下载多次。会造成磁盘空间的浪费,较长的下载时间,文件路径过

    2024年02月09日
    浏览(50)
  • npm、yarn、pnpm

    一、简介 CommonJS 的出现,使 node 环境下的 JS 代码可以用模块更加细粒度的划分。一个类、一个函数、一个对象、一个配置等等均可以作为模块,这种细粒度的划分,是开发大型应用的基石。 为了解决在开发过程中遇到的常见问题,比如加密、提供常见的工具方法、模拟数据

    2024年02月10日
    浏览(56)
  • 前端环境安装【mac/window,nvm,node,npm,yarn,react】

    目录 nvm:node版本管理器 安装 window mac 常见命令 Node、npm yarn React a.全局方式 b.临时方式 运行 nvm 主要是用来管理 nodejs 和 npm 版本的工具,可以用来切换不同版本的 nodejs。 安装nvm之前先卸载node Mac彻底卸载node Windows系统完全卸载删除 Node.js_卸载nodejs命令-CSDN博客z window mac n

    2024年01月18日
    浏览(77)
  • npm、yarn和pnpm

    在npm@3之前是以嵌套结构方式安装依赖包,存在两个问题: 依赖路径太长 多个包依赖一个相同包时,本地磁盘会存储多个相同的包 npm@ 3和 yarn 使用扁平化结构,node_modules变成所有包放在同一层级 注意 :多个版本的包只有一个会被提升至顶层,其他版本的包会嵌套安装到各自

    2024年02月11日
    浏览(54)
  • 前端环境安装【mac/window,nvm管理多个版本node,node,npm,yarn,react】

    目录 nvm:node版本管理器 安装 window mac 常见命令 Node、npm yarn React a.全局方式 b.临时方式 运行 nvm 主要是用来管理 nodejs 和 npm 版本的工具,可以用来切换不同版本的 nodejs。 安装nvm之前先卸载node Mac彻底卸载node Windows系统完全卸载删除 Node.js_卸载nodejs命令-CSDN博客z window mac n

    2024年01月16日
    浏览(101)
  • npm、yarn与pnpm详解

    🔍 简介 : npm 是随 Node.js 一起安装的官方包管理工具,它为开发者搭建了一个庞大的资源库,允许他们在这个平台上搜索、安装和管理项目所必需的各种代码库或模块。 🚀 常用命令 : npm install :安装package.json中声明的所有依赖项。 npm install package-name :安装指定名称的包

    2024年04月25日
    浏览(34)
  • pnpm、npm、yarn的区别

    pnpm、npm、yarn是三种不同的包管理器,它们之间有一些区别。 安装速度:pnpm的安装速度比npm和yarn快,因为它使用了只下载必需的模块,而不是下载整个依赖树。此外,pnpm还可以并行下载模块,从而进一步提高下载速度。 占用空间:pnpm的占用空间比npm和yarn小,因为它只下载

    2024年02月08日
    浏览(60)
  • npm、yarn、pnpm如何清除缓存?

    前端工程化创建项目会经常使用各种安装包管理工具,安装各种前端依赖包。例如,npm、yarn、pnpm等。时间一长,各种安装包管理工具的在安装依赖时,留下的缓存文件就会变得很大,以至于影响系统的运行,因此必要时清除缓存就是一个不错的选择。本文将着重介绍npm、y

    2024年02月07日
    浏览(60)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包