Yarn和NVM可以在Windows上共存吗?

时间:2017-03-30 04:52:46

标签: node.js windows npm nvm yarnpkg

Yarn一直在为我工作,直到我决定需要多个版本的节点。所以我按照the following guide

的说明卸载了纱线并安装了nvm

然后我使用msi安装程序成功重新安装了纱线。不幸的是,yarn global add [name]a location seemingly spanning all nvm-controlled node versions中安装了软件包,但同样无法访问所有软件包。也就是说,npm无法通过纱线找到全局安装的任何东西。或者,例如,在使用yarn全局安装gulp之后,我发现gulp在命令行上不可用(并且在c:\ program files \ nodejs中找不到它的cmd文件)。

所以我卸下了纱线msi。然后,我使用npm i --global yarn重新安装了纱线,作为suggested here。最后,这导致纱线与当前的nvm受控节点版本相关联。优异。

但是,当我再次尝试使用yarn来安装全局软件包时,我发现它们安装不正确。比如我跑了:

nvm use 5.11.0
yarn global add jspm gulp karma karma-cli

软件包安装成功,但是当我从命令行尝试“gulp”时,它不可用。此外,当我npm ls --global --depth=1时,我发现我安装的软件包无处可寻。如果我尝试yarn global ls --depth=0,我需要花很长时间才能告诉我我的软件包(jspm,gulp,karma,karma-cli)实际安装完毕。

更糟糕的是,我后来决定做以下事情:

nvm use 7.3.0    //fresh node install...no packages installed
npm i --global yarn
yarn global ls

然后,yarn命令显示我在nvm use 5.11.0生效时全局安装的相同软件包。简而言之,纱线坚持某种全局安装位置(与nvm控制节点版本看到的不同)。我也不知道纱线保留那些全局包的文件位置,所以我不确定卸载的“干净”我可以尝试。

简而言之,我认为yarn和nvm不兼容。这是对的吗?

版本信息

  • Windows 10 Pro,x64
  • nvm v1.1.3
  • 纱线v0.21.3
  • 节点5.11.0(由NVM选择)
  • 节点7.8.0(由NVM选择)

更新

我发现issue 1491可能包含我的答案。我了解到:

  1. 全球安装的纱线包的位置有意地位于与全球安装的包裹不同的位置。
  2. 确实存在一个纱线错误,它阻止全局安装的软件包在命令行上可用(doh!)。这违背了全球安装包的目的。
  3. Yarn在Windows上保存其数据的位置为%LocalAppData%\Yarn
  4. 我认为纱线在我安装nvm之前工作的原因,只是我没有尝试过使用安装全局软件包......因此还没有注意到这个bug。简而言之,我认为nvm很好。但是,我现在觉得我在浪费时间使用npm i --global yarn方法来安装纱线......因为纱线无论如何都会把所有的全球包裹放到一个地方。而且,由于当前的错误,我应该用来安装全局包的唯一工具是npm本身。

1 个答案:

答案 0 :(得分:1)

是一段时间前您问的,但我只是跳过了您的问题。

您可以简单地在全局范围内安装yarn作为节点模块:

<div class='container'>

这在使用nvm-windows时非常有效。

其他提示:由于要使用nvm切换到新的节点版本,需要重新安装所有全局安装的节点模块,因此我开始使用 npm i -g yarn 代替yarn来管理除以下各项以外的所有其他全局模块npm和纱线本身。这样,更新节点非常轻松。