社论:我们正在走向包装管理疲劳?

    尼尔森雅克
    分享

    这是我最新的JavaScript时事通讯的社论,你可以订阅这

    Facebook在上周发布了新的JavaScript包管理器Yarn,引起了不小的轰动。当我第一次听到这个消息时,您的第一反应可能与我类似:难道我们不需要另一个包管理器吗?!看起来,尽管新框架层出不穷,JavaScript社区至少已经决定将npm作为事实上的包管理器。

    但是等一下,在你在Twitter或博客上谴责包管理器疲劳之前,Yarn实际上并没有那么糟糕必威滚。首先,Yarn并不是一个新的包存储库:它更像是npm客户端的临时替代品,旨在改进npm的一些缺点。作为额外的奖励,它不仅与npm包一起工作,它还支持Bower!用其中一个包更改到一个项目文件夹。Json或凉亭。Json文件,运行,你就有生意了。

    “好吧,但我不用Bower,那我为什么要换成Yarn呢?”我听到你问了。Yarn团队构建它是为了解决他们在Facebook内部项目中使用npm时存在的速度、可靠性和安全性问题。为了实现这一点,Yarn生成了一个锁文件,帮助它准确跟踪每个依赖项是如何解析的。

    使用锁文件的好处之一是可以加快安装时间。到目前为止,我已经看到了一些关于它有多大区别的不同的描述(在某些情况下,它是否有区别),但这里有一些非常有趣的Yarn和npm之间的比较。Yarn做的另一件不同的事情是保留下载包的缓存,使得重新安装非常快。这也意味着它们可以离线完成。

    另一个重要的考虑因素是确保一个项目可以可预见地安装在不同的机器上。Yarn使用确定性算法来确定需要哪些依赖项,以确保它们总是以相同的顺序安装。这避免了npm有时会出现的潜在的难以调试的错误。

    纱线还提高了安装过程的可靠性。失败的依赖项请求将排队等待重试,而不是中止安装。智能地处理请求队列以并行化请求并最小化下载时间。

    如果你真的想精简你的项目,Yarn提供了执行平面安装的选项。您的项目中可能有多个包,它们依赖于特定库的不同版本。通过选择平面安装,Yarn将提示您在多个版本中需要的每个包,并允许您手动选择要安装的版本,从而防止需要在不同版本上安装多个副本。

    值得仔细研究一下CLI文档,因为还有其他一些有趣的命令可用。运行Yarn为什么将让您知道为什么安装了特定的包、它占用了多少空间以及它使用了多少共享依赖项。纱清洁仍处于试验阶段,但将尝试从node_modules文件夹中删除不需要的文件并回收一些磁盘空间。另一个可能有用的命令是纱许可证,它将列出项目正在使用的每个包的许可类型。

    对于那些担心Yarn会破坏生态系统的人来说,值得指出的是,无论如何这都不是第一个第三方npm客户端。npm的维护者把这看作是一个积极的发展他说,这表明Facebook“投入并致力于npm社区的持续健康发展”。这对任何地方的JavaScript开发者来说都是个好消息。”

    Baidu