包管理工具npm和Yarn的区别,我们该如何选择?

这篇具有很好参考价值的文章主要介绍了包管理工具npm和Yarn的区别,我们该如何选择?。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

好家伙,学习新工具 

 

1.为什么我们需要包管理器?

关于npm我们已经知道了,这是我们项目的包管理器,

我们现在用的无比顺手的工具,都是在无数的竞争中杀出来的,他们淘汰了无数的产品

 

首先,倘若我们不使用npm,那么我们应该如何去新建一个前端项目?

纯手工,把我们项目需要的项目一个个下载到我们的项目里面

手动创建项目意味着您需要手动管理项目的依赖和文件结构,包括下载和引入任何所需的库或框架。

想想都可怕,再加上各种bug

我们新建一个项目可能需要?半个小时左右

 

于是我们的好帮手出现了,包管理器npm

 

我们把我们的配置清单给npm,随后,npm帮我们下载我们项目依赖的包

于是我们从30分钟优化到1分钟

npm真是太伟大了

 

2.NPM出现问题

但随后,NPM又出现了一些问题

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

2.1.安装太慢

新项目拿到手,安装依赖太慢

npm install

 

npm 2会安装每一个包所依赖的所有依赖项。如果我们有这么一个项目,它依赖项目A,项目A依赖项目B,项目B依赖项目C,那么依赖树将如下所示:

node_modules
- package-A
-- node_modules
--- package-B
----- node_modules
------ package-C
-------- some-really-really-really-long-file-name-in-package-c.js

 

这个结构可能会很长。这对于Windows来说却是个破坏性的东西,因为有很多程序无法处理超过260个字符的文件路径名。

npm 3采用了扁平依赖关系树来解决这个问题,所以我们的3个项目结构现在看起来如下所示:

node_modules
- package-A
- package-B
- package-C
-- some-file-name-in-package-c.js
这样,一个原来很长的文件路径名就从./node_modules/package-A/node_modules/package-B/node-modules/some-file-name-in-package-c.js
变成了/node_modules/some-file-name-in-package-c.js。

这种方法的缺点是,npm必须首先遍历所有的项目依赖关系,然后再决定如何生成扁平的node_modules目录结构。

npm必须为所有使用到的模块构建一个完整的依赖关系树,这是一个耗时的操作,是npm安装速度慢的一个很重要的原因。

 

2.2.无法保持一致性

想像一下去和小黄一起开发一个项目登陆页面,然后,你们在不同的时间安装了依赖包,

而碰巧,其中一个包更新了,14.2.1变成了14.2.2,或许是其中的一个组件框的样式改变了,

于是你会发现,你两的项目跑起来会有微妙的差别,当然了,也有可能是其他的各种各样严重的bug

总之,依赖包的版本不统一,是一个非常大的问题,可能会导致严重的问题

 

3.Yarn出现

于是针对这两个问题,

Yarn出现了,他很好地解决的npm存在的一些问题

yarn更快(为什么?)

1.并行安装:Yarn 采用并行安装的方式,可以同时下载多个依赖包,而 npm 是串行安装,只能一个一个地下载。这意味着当你使用 Yarn 时,依赖包的安装过程更加高效。

2.本地缓存:Yarn 有一个本地缓存目录,用于存储已经下载过的依赖包。当你需要安装同一个依赖包的不同版本时,Yarn 可以直接从本地缓存中获取,而无需重新下载。这可以节省大量的下载时间。

3.精确的依赖管理:Yarn 会生成一个锁文件 (yarn.lock),用于确保每个开发者在不同环境下都使用相同版本的依赖包。这意味着在安装依赖包时,Yarn 可以更加准确地确定需要使用的版本,减少了版本冲突和不一致性问题。

 

在后来,

有了yarn的压力之后,npm做了一些类似的改进(对手起来了,再不与时俱进要就要被淘汰了)

1. 默认新增了类似yarn.lock的 package-lock.json,同样用于处理依赖包版本一致性的问题
2. git 依赖支持优化:这个特性在需要安装大量内部项目(,或需要使用某些依赖的未发布版本时很有用。

3.npm是有本地缓存的,它保存了已经下载的每个版本的压缩包。本地缓存的内容可以通过-npm cache ls命令进行查看。

本地缓存的设计有助于减少安装时间。

 

那么最终该如何选择呢?

1. 性能需求:如果你对构建速度和依赖包下载速度有较高的需求,可以使用Yarn。Yarn在处理大型项目和并发操作时通常更高效。

2. 生态系统和兼容性:Npm是JavaScript生态系统的默认选择,很多项目都使用Npm作为包管理工具,并且它与其他工具和服务的兼容性较好。

如果你的项目依赖于特定的Npm插件或服务,或者与其他使用Npm的项目进行交互,那么使用Npm可能更方便。

3. 社区支持和文档:Npm和Yarn都有庞大的社区和文档资源,但是Npm在这方面可能更加成熟和全面。

如果你更倾向于使用广泛支持的工具,并且更容易找到相关的教程、示例和问题解答,那么选择Npm可能是一个不错的选择。

4. 团队合作:如果你在一个团队中工作,建议与团队成员协商并讨论选择。考虑到团队中其他开发者的熟悉程度和偏好,可以决定是否使用Npm还是Yarn。

根据你的性能需求、生态系统要求、社区支持和团队合作等因素来衡量,选择适合你项目的工具。

无论是Npm还是Yarn,它们都是广泛使用的可靠工具,并且都能满足大部分项目的需求。

 

最后,yarn的安装方式

包管理工具npm和Yarn的区别,我们该如何选择?

 (用你的平台安装我,这何尝不是一种NTR)

 

 

到了这里,关于包管理工具npm和Yarn的区别,我们该如何选择?的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 包管理工具详解npm 、 yarn 、 cnpm 、 npx 、 pnpm(2023)

    Node Package Manager,也就是Node包管理器; 但是目前已经不仅仅是Node包管理器了,在前端项目中我们也在使用它来管理依赖的包; 比如vue、vue-router、vuex、express、koa、react、react-dom、axios、babel、webpack等等; npm属于node的一个管理工具,所以我们需要先安装Node; node管理工具:

    2024年02月13日
    浏览(41)
  • 【前端笔记】前端包管理工具和构建打包工具介绍之npm、yarn、webpack、vite

    NPM(Node Package Manager)是node包管理器,是node.js默认采用的软件包管理系统,使用JavaScript语言编写。包管理可以理解为依赖管理,有一个npm包管理仓库,当我们执行npm命令的时候,就可以直接从npm仓库中下载对应的依赖包,类似于后端开发中的POM。 node.js中就已经安装了NPM,所

    2024年02月02日
    浏览(27)
  • 包管理工具 nvm npm nrm yarn cnpm npx pnpm详解

    npm、cnpm、yarn、pnpm、npx、nvm的区别:https://blog.csdn.net/weixin_53791978/article/details/122533843 npm、cnpm、yarn、pnpm、npx、nvm的区别:https://blog.csdn.net/weixin_53791978/article/details/122533843 包管理工具:npm、npx、yarn、cnpm、pnpm:https://blog.csdn.net/March_Q__/article/details/126675476 包管理工具详解npm 、

    2024年02月12日
    浏览(31)
  • 前端包管理器的工具,npm和Yarn以及pnpm是最常用的

    👍 点赞,你的认可是我创作的动力! ⭐️ 收藏,你的青睐是我努力的方向! ✏️ 评论,你的意见是我进步的财富! 前端包管理器是用于管理前端项目依赖项(如库、框架和工具)的工具。它们有助于确保项目的依赖项始终保持最新、可维护和可复制。以下是一些常用的前

    2024年02月07日
    浏览(41)
  • 包管理工具那么多,怎么选?npm、yarn 和 pnpm 三者比较及使用详解!

    在 Vue 项目中,我们需要使用许多第三方依赖库,如 Vue Router、Vuex、Axios、Element UI 等等。这些依赖库通常以 NPM 包的形式提供,而且在使用时需要进行版本管理。因此,我们需要使用一个包管理工具来统一管理这些依赖库,避免版本冲突和管理繁琐。 常见的 Vue 项目包管理工

    2024年02月07日
    浏览(34)
  • 软件研发过程中,项目管理工具应该如何选择?

    本文作者:极狐GitLab 资深解决方案架构师 尹学峰 许多企业依旧在用老旧的方式,如Excel离线表格进行项目管理。表格无法简介的呈现出项目的任务分解、完成进度、任务类别等多种项目管理过程中必备的要求,更无法实现与企业员工的日常即时通信系统的打通。往往导致项

    2024年01月17日
    浏览(52)
  • 如何根据需求选择合适的数据库管理工具?Navicat OR DBeaver

    1.写在前面 在阅读本文之前,糖糖给大家准备了Navicat和DBeaver安装包,在公众号内回复“Navicat”或“DBeaver”或\\\"数据库管理工具\\\"来下载。 2. 引言 对于测试而言,在实际工作中往往会用到数据库,那么选择使用哪种类型的数据库管理工具显的尤为重要,我们常用的数据库管理

    2023年04月17日
    浏览(38)
  • 统一使用某一个包管理工具,比如yarn pnpm

    原因:前端每个人的习性不一样,有人用npm 有人用yarn等包管理工具,混合下载插件容易出bug,就用个小工具锁住就行了,只能使用yarn或者pnpm反向下载依赖和下载插件。不然就报错 改为pnpm的例子,就把yarn改为pnpm就可以了 if (!/ pnpm /.test(process.env.npm_execpath || \\\'\\\')) { 在scripts下添

    2024年02月10日
    浏览(37)
  • Npm 工具完全删除 - 安装 npm多版本管理工具 nvm

    1. windows10完全卸载npm 1. npm多版本管理

    2024年02月16日
    浏览(41)
  • 包管理工具:npm

    安装Node的过程会自动安装npm工具 比如npm install dayjs后 直接运行 生成package.json文件  方式一:手动从零创建项目,npm init –y  方式二:通过脚手架创建项目,脚手架会帮助我们生成package.json,并且里面有相关的配置     全部输入yes的指令   ◼ 必须填写的属性:name、ver

    2024年02月15日
    浏览(33)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包