问题
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