lmk123 / blog

个人技术博客,博文写在 Issues 里。
https://github.com/lmk123/blog/issues
623 stars 35 forks source link

放弃使用 Yarn 2 的几点原因 #103

Open lmk123 opened 2 years ago

lmk123 commented 2 years ago

Yarn 2 已经发布了一年多了,今天我尝试将划词翻译从 Yarn 1 迁移到了 Yarn 2,但折腾了几个小时之后,我决定重新用回 Yarn 1。

在这里记录一下原因,等到以后再准备用 Yarn 2 时,看看有没有改进。

Webstorm 对 PnP 的支持不够好

使用 PnP 之后,Webstorm 报了两个错误:

虽然 WebStorm 的开发者说最新版已经支持的很好了,但我用的就是最新版,而且也找不到可以解决问题的办法。在查找了一段时间的解决方案无果后,我重新改为了 node_modules 的方式。

.yanr.yaml 没法像 .npmrc 那样配置环境变量

如 #28 所说,我需要配置一些包(如 electron、node-sass 等)的镜像地址。在 Yarn 1 里,我把这些环境变量配置在了 .npmrc 文件里,但在 Yarn 2 里,.yarn.yaml 不支持配置环境变量,且它也不读取 .npmrc。

最终我使用了 #28 的第二种方案,即配置代理的形式来安装这些包。比较麻烦的是,一般情况是不需要代理的,所以我平时还得把代理给注释掉,需要用的时候再开。

相关 issue: https://github.com/yarnpkg/berry/issues/2464

没有 yarn outdatedyarn upgrade

Yarn 2 提供了两个相关的命令 yarn upyarn upgrade-interactive,但是:

yarn up 没法做到 yarn upgrade --latest,如果我想升级依赖,那我得敲很多条命令。网上有人说可以用 yarn up ** 但我试了一下会报错。

yarn upgrade-interactive 就更离谱了,列了好几十个包出来让我挨个选择。而且,这个交互式的命令在我的终端里看起来很奇怪。相比于 yarn outdated,它似乎列出了不在 package.json 里的一些依赖项,这看起来很杂乱。

虽然 yarn outdated 有插件,但 yarn upgrade --latest 却没有。

相关 issue:https://github.com/yarnpkg/berry/issues/749

总结

折腾到上面的最后一个问题的时候,我已经没有耐心了,于是重新用回了 Yarn 1。