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

帅比萌擦擦* 提交于 2019-12-11 07:59:46

问题


I was trying to run yarn global upgrade generator-jhipster but even though it seemed like it was working and installing the latest version, when I would run yo jhipster It would still be on an old version and would prompt me to run yarn global upgrade generator-jhipster

I was running on OSX (Mac)

I had just recently started using Yarn. I was previously using NPM but uninstalled NPM.

$HOME/.config/yarn/global/node_modules/.bin was in my path, so that wasn't the issue.


回答1:


When I switched over from NPM to Yarn, I did not remove the packages installed by NPM before uninstalling NPM. So, when adding global packages via Yarn, the symlinks were still associated with the NPM installations. This caused me to have issues globally upgrading/adding the packages through Yarn, since it wasn't pointing to the new versions managed by Yarn.

(I had installed Node and NPM via Homebrew and this is how I ended up reinstalling NPM:)

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

Then I removed all of NPM's global modules since I wanted to exclusively use Yarn now. (Make sure you really want all of these removed before you do this! You might want to run npm list -g --depth=0 to see what NPM was managing for you, so you can reinstall with Yarn) (This does not work on Windows, for a Windows version, see Ollie Bennett's Answer

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

Here is how it works: Taken from Kai Sternad's Answer

  • npm ls -gp --depth=0 lists all global top level modules (see the cli documentation for ls)
  • awk -F/ '/node_modules/ && !/\/npm$/ {print $NF}' prints all modules that are not actually npm itself (does not end with /npm)
  • xargs npm -g rm removes all modules globally that come over the previous pipe

Then, reinstalled yarn. brew install yarn

Be sure you have $HOME/.config/yarn/global/node_modules/.bin in your path. (see Yarn Path Setup

On Mac or Linux:

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

Then installed yo and generator-jhipster (I had already removed these via Yarn) (see Installing JHipster)

yarn global add yo
yarn global add generator-jhipster

Add it was finally globally updated to the latest version!




回答2:


If you still have issues on Mac OS Sierra after following the steps in the accepted answer try using the following command:

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

It's straight from Yarn's alternative install methods page.

I'm on macOS Sierra v10.12.5 with Node and Yarn installed via Homebrew. Node is version 8.5.0. NPM is version 5.3.0.

Yarn was on v0.24.6. Upgraded to v1.0.2.



来源:https://stackoverflow.com/questions/44052605/yarn-package-wont-upgrade-globally-after-migrating-from-npm

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!