刚刚试用了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
在后台做了一些其他的魔术,我只是对我不需要关心的进程很天真,也许最好不要去管树,完全忘记--flat
和dedupe
。
3条答案
按热度按时间xzlaal3s1#
即使是现在,Yarn似乎也没有最大限度地减少重复依赖项。运行
yarn --flat
会强制依赖项只有一个版本,即使它们可能不兼容,所以这并不理想。您可以使用yarn-deduplicate
包来最大限度地减少重复项的数量,同时在没有重叠需求的情况下仍然允许一些。yarn-deduplicate
也有一个--fail
选项,它将返回一个非零(失败)这对于在CI上运行以确保修改依赖项的任何人都不会引入新的重复项非常有用。r1zk6ea12#
npx yarn-dedupe
做得非常好xsuvu9jc3#
引用自Yarn文档:
dedupe命令不是必需的。
yarn install
已经执行了重复数据消除。https://yarnpkg.com/lang/en/docs/cli/dedupe/