博客
关于我
yarn简介
阅读量:379 次
发布时间:2019-03-05

本文共 1231 字,大约阅读时间需要 4 分钟。

Yarn简介:一个高效的JavaScript包管理工具

Yarn 是由 Facebook、Google、Exponent 和 Tilde 联合开发的一个全新JS包管理工具。尽管它仍然使用npm的Registry,但它提供了全新的命令线界面(CLI)来管理包。Yarn的出现一度对npm构成巨大冲击,甚至有媒体称“npm只剩下一个Registry了”。

Yarn出现的原因

在Yarn出现之前,npm存在以下问题:

  • 依赖目录嵌套层次深:npm的依赖目录结构过于复杂,尤其在Windows系统上,会导致无法支持过深的目录结构。这种问题在早期的版本中尤为明显。

  • 下载速度慢:由于依赖目录嵌套,npm只能以串行方式下载包,导致带宽资源未被充分利用。此外,相同版本的包会被重复下载。

  • 控制台输出繁杂:安装过程中会输出大量详细信息,导致难以追踪错误。

  • 工程移植问题:npm的版本依赖可能不明确,导致工程移植后依赖版本不一致。

  • Yarn的解决方案

    针对上述问题,Yarn采用了以下手段:

  • 扁平化目录结构:Yarn将所有依赖文件放在同一目录下,避免了嵌套结构的问题。

  • 并行下载:Yarn能够并行下载依赖包,充分利用带宽资源,提升下载速度。

  • 本地缓存:Yarn使用本地缓存机制,减少了重复下载相同包的次数。

  • 控制台输出优化:Yarn在安装过程中仅输出关键信息,降低了信息量,方便用户查看。

  • Yarn-Lock文件:Yarn使用Yarn-Lock文件记录确切依赖版本,确保依赖的准确性。

  • Yarn的优势

    除了解决上述问题,Yarn还优化了以下内容:

  • 功能强大的命令:Yarn提供了一些强大的命令,增强了操作的灵活性。

  • 命令语义化:Yarn的命令更加语义化,便于用户理解和使用。

  • 本地安装的CLI工具:Yarn提供了本地安装的CLI工具,可以直接使用Yarn启动。

  • 全局安装的优化:Yarn将全局安装目录当作一个普通工程,生成package.json文件,便于全局安装的移植。

  • Yarn与npm6的比较

    Yarn的出现让npm感受到了巨大压力。随着时间的推移,npm也学习了Yarn的先进理念,并在npm6版本中实现了与Yarn相当的功能。npm6解决了以下问题:

  • 目录扁平化:npm6采用了类似的扁平化依赖目录结构。

  • 并行下载:npm6支持并行下载,提升了下载效率。

  • 本地缓存:npm6使用了本地缓存机制,减少了重复下载。

  • 确切依赖记录:npm6使用package-lock文件记录确切依赖版本。

  • 命令别名增加:npm6增加了大量命令别名,增强了操作的便利性。

  • 内置npx:npm6内置了npx,可以启动本地的CLI工具。

  • 控制台输出简化:npm6极大简化了控制台输出,方便用户查看信息。

  • 总结

    在当前版本中,npm6已经与Yarn非常接近,甚至可以说它们的差距不大。许多项目在初期选择Yarn,后来又转回使用npm。对于开发者来说,这两个包管理器都是主流工具,值得深入学习和掌握。

    转载地址:http://ddywz.baihongyu.com/

    你可能感兴趣的文章
    Python 从数据库中存储和检索密码的最安全方法
    查看>>
    Python语言及其应用 - 知识点遍历
    查看>>
    Python 优化提速的 8 个小技巧
    查看>>
    Python 余弦相似度与皮尔逊相关系数 计算
    查看>>
    python 使用execjs 报编码错误解决办法,UnicodeDecodeError: ‘gbk‘ codec can‘t decode byte 0xac in position 145: il
    查看>>
    python 使用filetype校验文件
    查看>>
    Python 使用flush函数将缓冲区数据立即写磁盘
    查看>>
    python 使用in判断不准确,in不好使
    查看>>
    Python 使用pandas 进行查询和统计详解
    查看>>
    Redis 配置文件redis.conf详细解释
    查看>>
    python网络爬虫(2)——scrapy框架的基础使用
    查看>>
    python网络爬虫实例教程试读_Python网络爬虫实战教程(全套完整版) - 学途无忧网 - 做技术的王者 - Powered By EduSoho...
    查看>>
    Python 使用哈希函数用于加密
    查看>>
    Python 依赖管理的革新——Poetry 深度解析
    查看>>
    python 保留精度及增加去除数字的千位分隔符(金额化数字)
    查看>>
    python 倒计时 9,8,7,。。。。。。0
    查看>>
    Python 入门开发学习笔记之数据的增删改查
    查看>>
    Python 入门教程(2)搭建环境 2.4、VSCode配置Node.js运行环境
    查看>>
    Python 八大排序算法合集
    查看>>
    python 关于epoll的学习
    查看>>