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

Posted

技术标签:

【中文标题】Yarn 和 NVM 可以在 Windows 上共存吗?【英文标题】:Can Yarn and NVM Coexist on Windows? 【发布时间】:2017-08-23 20:16:09 【问题描述】:

Yarn 一直为我工作,直到我决定需要多个版本的节点。所以我按照the following guide的说明卸载了yarn并安装了nvm

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

所以我卸载了 yarn 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 生效时全局安装的相同包。简而言之,yarn 坚持某种全局安装位置(与 nvm 控制的节点版本不同)。我也不知道 yarn 保存这些全局包的文件位置,所以我不确定我可以尝试卸载的“干净”程度。

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

版本信息

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

更新

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

    故意将全局安装的 yarn 包的位置与全局安装的 npm 包的位置不同。 确实存在一个 yarn 错误,它会阻止全局安装的软件包在命令行上可用(doh!)。这违背了全局安装软件包的目的。 Yarn 在 Windows 上保存其数据的位置是 %LocalAppData%\Yarn

我认为在我安装 nvm 之前 yarn 工作的原因仅仅是我没有尝试使用它来安装全局包......因此还没有注意到这个错误。简而言之,我认为使用 nvm 没问题。但是,我现在觉得使用npm i --global yarn 方法安装纱线是在浪费时间……因为纱线无论如何都会简单地将其所有全局包放在一个位置。而且,由于当前的错误,我应该用来安装全局包的唯一工具是 npm 本身。

【问题讨论】:

有些related issue 涉及已记录的二进制版本。另外,请尝试在 AppData\Local\Yarn 下查看 Yarn 保存的文件。 【参考方案1】:

你刚才问了,但我刚刚跳过了你的问题。

你可以简单地全局安装yarn作为节点模块:

 npm i -g yarn

这在使用 nvm-windows 时效果很好。

附加提示:由于使用 nvm 切换到新的节点版本需要重新安装所有全局安装的节点模块,我开始使用 yarn 而不是 npm 来管理除 npm 和 yarn 本身之外的所有其他全局模块.这样,更新节点就很轻松了。

【讨论】:

以上是关于Yarn 和 NVM 可以在 Windows 上共存吗?的主要内容,如果未能解决你的问题,请参考以下文章

nvm,nrm和yarn

安装nvm后再安装yarn,报'yarn' 不是内部或外部命令

nvm+node.js+yarn安装

markdown 通过Homebrew安装NVM,Node.js,Yarn

Yarn 无法执行 source 命令

Windows下nvm的安装和配置