纱线是否是npm的包装物?

时间:2017-04-23 14:49:41

标签: javascript npm yarnpkg

我已经意识到Yarn带来的好处以及npm没有做到的好处。不过我确实有些疑惑:

  • 对于保留与npm相同行为的其他一些命令,Yarn是否使用npm
  • 如果不是,是否有理由将它们重新用于纱线中并且这种方法存在缺点?

2 个答案:

答案 0 :(得分:5)

不,这是重写。

  

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

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

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

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

这种方法的缺点是它需要大量的工作。通常情况下,你只会对主要的回购公关进行公关,但鉴于他们想要一个完全不同的东西而且Facebook有办法,他们决定单独进行。

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

答案 1 :(得分:0)

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

我认为这种方法的缺点是,在将来npm添加新命令时,Yarn团队必须跟踪更改并手动实施。