【问题标题】:Is Yarn a wrapper over npm?Yarn 是 npm 的包装器吗?
【发布时间】:2017-04-23 14:49:40
【问题描述】:

我知道 Yarn 带来的好处以及 npm 没有带来的好处。不过,我确实有一些疑问:

  • Yarn 是否在后台使用npm 来处理与npm 保持相同行为的其他一些命令?
  • 如果不是,是否有理由在纱线中重新实现它们?这种方法是否有缺点?

【问题讨论】:

标签: javascript npm yarnpkg


【解决方案1】:

不,这是重写。

我们没有继续围绕 npm 客户端构建基础架构,而是 决定尝试更全面地看待这个问题。 如果 相反,我们尝试构建一个解决核心问题的新客户端 我们遇到的问题? Sebastian McKenzie 在我们伦敦的办公室 开始研究这个想法,我们很快就对它感到兴奋 潜力。

-- https://code.facebook.com/posts/1840075619545360

它提供了相同的 API(如果您注意到的话,没有一些快捷方式)。这是(我猜的)因为原始界面足够简单并且可以确保采用。

速度更快,解决了 npm 的典型问题(主要是不确定性部署)。这只能通过自上而下的重写来实现,他们还改变了 deps 的安装方式(获取、计算、下载、链接),因此逻辑不同。

这种方法的缺点是需要大量工作。通常情况下,你只会在主仓库上公关,但考虑到他们想要完全不同的东西,而 Facebook 有办法,他们决定单独行动。

另一个很大的缺点是它的好处不会立即提供给所有 npm 老用户,因为它不是升级,也没有随 node 一起安装。

【讨论】:

  • 为什么 yarn 需要安装 npm 4.6.1,并且与 npm5 不兼容,为什么我在使用 yarn 时需要 npm,这不矛盾吗?看看这个:github.com/yarnpkg/yarn/issues/4212
  • 这取决于安装方法,我相信。如果你用 brew 安装它,它可能有不同的要求。
【解决方案2】:

我查看了 Yarn 的源代码,发现每个命令都写了自定义代码:https://github.com/yarnpkg/yarn/tree/master/src/cli/commands

我猜这种方法的缺点是,将来当npm 添加新命令时,Yarn 团队将不得不跟踪更改并手动实施它们。

【讨论】:

    猜你喜欢
    • 2021-08-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-17
    • 2022-12-14
    • 2021-02-14
    • 2019-07-11
    相关资源
    最近更新 更多