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

纱线正在为我工​​作,直到我决定我需要多个版本的节点。 所以我卸载了纱线并安装了nvm,按照以下指导进行操作

然后,我使用msi安装程序成功重新安装纱线。 不幸的是, yarn global add [name]安装的软件包在一个看起来横跨所有nvm控制的节点版本的位置 ,但它们同样无法访问。 就是说,npm找不到纱线全球安装的东西。 或者,例如,在全球使用纱线安装gulp后,我发现gulp在命令行上不可用(并且它的cmd文件在c:\ program files \ nodejs中找不到)。

所以我卸载了纱msi。 然后npm i --global yarn build议在 npm i --global yarn重新安装纱线。 这最终导致纱线与当前nvm受控节点版本相关联。 优秀。

但是,当我再次尝试纱线来安装全局包时,我发现它们没有正确安装。 比如我跑了:

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

软件包安装成功,但是当我从命令行尝试“gulp”时,它不可用。 另外,当我npm ls --global --depth=1我看到我安装的软件包无处可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(由NVMselect)
  • 节点7.8.0(由NVMselect)

更新

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

  1. 全球安装的纱线包的位置故意与全球npm安装的包不同。
  2. 确实有一个纱线错误,它会阻止全局安装的软件包在命令行中可用(doh!)。 这打破了全球安装套件的目的。
  3. Yarn在Windows上保存其数据的位置是%LocalAppData%\Yarn

我想在我安装nvm之前,纱线工作的原因,只是我没有尝试使用安装全局包…因此还没有注意到这个错误。 总之,我认为nvm是好的。 然而,现在我觉得我正在浪费我的时间,使用npm i --global yarn方法来安装纱线,因为纱线只是简单地把所有的全球包裹放到一个地方。 而且,由于目前的错误,我应该用来安装全局包的唯一工具是npm本身。