是否有“npm重复数据删除”的等效纱线?

时间:2016-10-22 22:27:21

标签: npm yarnpkg

刚试过纱线,确实它速度超快。在控制台中使用加载的yarn运行package.json后,它安装了所有内容。然后我跑npm dedupe期待没有什么事情发生,因为Yarn是如此优化,但它删除了的东西。是否有一些纱线相当于npm dedupe

增加:

正如我在下面的评论中所指出的那样,我认为yarn install --flat可能是npm dedupe等效,因为Yarn documentation将其描述为“安装一个且只有一个版本的软件包”。所以我和--flat一起玩,有几件事需要注意:

  1. 当树导致多个版本的请求时,它将提示您选择要安装的软件包版本。我可以想象这对于大型项目来说是一项艰巨的任务。我刚刚为我提示的每个软件包选择了最新版本,您可以想象,尝试运行该应用程序会导致cannot find module错误。
  2. 我在执行npm dedupe之后运行了yarn install --flat ,而仍然导致了大量的删除。这对我来说是一个惊喜。
  3. 所以我认为npm dedupe正在做其他一些魔术,而我对于我不需要关注的过程只是天真。也许最好不要单独留下树而忘记--flatdedupe

2 个答案:

答案 0 :(得分:0)

从Yarn文档引用:

  

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

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

答案 1 :(得分:0)

即使现在,Yarn似乎也没有尽最大的努力来减少重复的依赖关系。运行$length = (isset($_POST["length"]))? $_POST["length"] : -1; $start = (isset($_POST["start"]))? $_POST["start"] : 0; if ($_POST["length"] > -1) { $query .= 'LIMIT ' . $start . ', ' . $length; } 会强制依赖项只有一个版本,即使它们可能不兼容也是如此,所以这不是理想的选择。您可以使用yarn-deduplicate包来最大程度地减少重复项,同时在不存在重叠需求的情况下仍可以允许重复项。 yarn --flat还有一个yarn-deduplicate选项,它将返回非零(失败)状态。这对于在CI上运行很有用,以确保修改依赖项的任何人都不会引入新的重复项。