有没有Yarn对应的“npm dedupe”?

tmb3ates  于 2024-01-08  发布在  Yarn
关注(0)|答案(3)|浏览(284)

刚刚试用了Yarn,它确实是超级快的。在控制台中运行yarn并加载package.json后,它安装了所有内容。然后我运行npm dedupe,因为Yarn是如此优化,所以我希望没有什么发生,但它删除了一吨的东西。有没有一些Yarn等效于npm dedupe

添加:

正如我在下面的评论中所指出的,我认为yarn install --flat可能是npm dedupe的等价物,因为Yarn文档将其描述为“安装一个且仅一个版本的软件包”。所以我尝试了--flat,有几件事需要注意:
1.当目录树导致多个版本的请求时,它会提示你选择要安装的软件包版本。我可以想象,对于大型项目来说,这是一项艰巨的任务。我只是为每个提示的软件包选择了最新版本,正如你所想象的,尝试运行应用程序导致了cannot find module错误。
1.我在运行了yarn install --flat之后运行了npm dedupe,结果仍然导致了大量的删除。这对我来说是一个惊喜。
所以我认为npm dedupe在后台做了一些其他的魔术,我只是对我不需要关心的进程很天真,也许最好不要去管树,完全忘记--flatdedupe

xzlaal3s

xzlaal3s1#

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

r1zk6ea1

r1zk6ea12#

npx yarn-dedupe做得非常好

xsuvu9jc

xsuvu9jc3#

引用自Yarn文档:
dedupe命令不是必需的。yarn install已经执行了重复数据消除。
https://yarnpkg.com/lang/en/docs/cli/dedupe/

相关问题