Yarn 包不会全局升级(从 NPM 迁移后)

Yarn package won't upgrade globally (after migrating from NPM)

我试图 运行 yarn global upgrade generator-jhipster 但即使它看起来正在运行并安装最新版本,当我 运行 yo jhipster 它仍然会使用旧版本并提示我 运行 yarn global upgrade generator-jhipster

我 运行宁 OSX (Mac)

我最近才开始使用 Yarn。我以前使用 NPM 但卸载了 NPM。

$HOME/.config/yarn/global/node_modules/.bin 在我的道路上,所以那不是问题。

当我从 NPM 切换到 Yarn 时,我在卸载 NPM 之前没有删除 NPM 安装的包。因此,当通过 Yarn 添加全局包时,符号链接仍然与 NPM 安装相关联。这导致我在全球范围内遇到问题 upgrading/adding 通过 Yarn 的包,因为它没有指向由 Yarn 管理的新版本。

(我通过 Homebrew 安装了 Node 和 NPM,这就是我最终重新安装 NPM 的方式:)

brew uninstall --force yarn
brew uninstall --force node
brew install node

然后我删除了所有 NPM 的全局模块,因为我现在想专门使用 Yarn。 (在执行此操作之前,请确保您真的想要删除所有这些!您可能想 运行 npm list -g --depth=0 看看 NPM 为您管理了什么,这样您就可以使用 Yarn)(这不适用于 Windows,对于 Windows 版本,请参阅 Ollie Bennett's Answer

npm ls -gp --depth=0 | awk -F/ '/node_modules/ && !/\/npm$/ {print $NF}' | xargs npm -g rm

这是它的工作原理:Taken from Kai Sternad's Answer

  • npm ls -gp --depth=0 列出所有全局顶级模块(请参阅 ls 的 cli 文档)
  • awk -F/ '/node_modules/ && !/\/npm$/ {print $NF}' 打印所有实际上不是 npm 本身的模块(不以 /npm 结尾)
  • xargs npm -g rm 全局删除所有来自前一个管道的模块

然后,重新安装纱线。 brew install yarn

确保你的路径中有 $HOME/.config/yarn/global/node_modules/.bin。 (参见 Yarn Path Setup

在 Mac 或 Linux 上:

export PATH="$PATH:`yarn global bin`:$HOME/.config/yarn/global/node_modules/.bin"

然后安装 yo 和 generator-jhipster(我已经通过 Yarn 删除了它们)(参见 Installing JHipster

yarn global add yo
yarn global add generator-jhipster

添加终于全局更新到最新版本了!

如果按照接受的答案中的步骤操作后,Mac OS Sierra 仍然存在问题,请尝试使用以下命令:

curl -o- -L https://yarnpkg.com/install.sh | bash

直接来自Yarn's alternative install methods page

我在 macOS Sierra v10.12.5 上,通过 Homebrew 安装了 Node 和 Yarn。节点是 8.5.0 版。 NPM 是版本 5.3.0.

Yarn 使用的是 v0.24.6。升级到 v1.0.2.