26

刚刚试用了 Yarn,它确实非常快。yarn在带有加载的控制台中运行后package.json,它安装了所有内容。然后我跑了npm dedupe,期待什么都不会发生,因为 Yarn 已经如此优化,但它删除了很多东西。是否有一些纱线相当于npm dedupe

添加:

正如我在下面的评论中所指出的,我认为yarn install --flat可能npm dedupeYarn 文档将其描述为“安装一个且只有一个版本的包”相同。所以我玩了一下--flat,有几点需要注意:

  1. 当树导致对多个版本的请求时,它将提示您选择要安装的软件包版本。我可以想象这对于大型项目来说是一项艰巨的任务。我刚刚为每个提示我的软件包选择了最新版本,正如您可以想象的那样,尝试运行该应用程序会导致cannot find module错误。
  2. 我做了一个npm dedupe 之后跑了yarn install --flat,它仍然导致了大量的移除。这对我来说是一个惊喜。

所以我认为它npm dedupe正在做一些其他的魔法,我只是对我不需要关心的过程很天真。也许最好不要管这棵树--flatdedupe完全忘记。

4

2 回答 2

4

即使是现在,Yarn 似乎也没有在最小化重复依赖方面做得最好。即使它们可能不兼容,运行yarn --flat也会强制只有一个版本的依赖项,所以这并不理想。您可以使用该yarn-deduplicate包来最大限度地减少重复的数量,同时在没有重叠要求的情况下仍然允许一些重复。yarn-deduplicate还有一个--fail选项将返回非零(失败)状态。这对于在 CI 上运行很有用,以确保修改依赖项的任何人都不会引入新的重复项。

于 2019-05-27T06:42:07.300 回答
0

引用自 Yarn 文档:

不需要重复数据删除命令。yarn install已经进行了重复数据删除。

https://yarnpkg.com/lang/en/docs/cli/dedupe/

于 2019-01-22T20:52:06.303 回答