.npmrc prefix override nvm
SeeThruHead opened this issue · 18 comments
symptoms, npm install -g npm installs npm to the wrong directory
overridden by .npmrc
removing "prefix=~/.node" from npmrc fixes the issue
osx ver: osx 10.10.1
zsh ver: zsh 5.0.5 (x86_64-apple-darwin14.0)
.npmrc:
prefix=~/.node
I don't believe this is an nvm specific issue.
I asked @SeeThruHead to file this - the problem as I see it is that nvm (correctly) doesn't respect npm's prefix option, but npm itself will.
I'm not sure how to handle this, but at the least, nvm could print out a warning.
Noting from #427 that the env var $NPM_CONFIG_PREFIX also causes problems with nvm.
Maybe detect the nvm config setting upon installation and issue a stern warning?
I'm considering making nvm refuse any operation whatsoever when problematic settings are set.
sure, just do a npm config get prefix and if it doesn't contain /.nvm/ then bail out.
Ugh. Until this is patched, you might want to put a note in the README … I have no idea where my ~/.npmrc came from, but I've been complaining about being unable to update npm for ages. (At least now I know why.)
Good idea - I'll get to one or the other hopefully in the next few weeks, but a README PR is welcome in the meantime.
I'm leaving it open until nvm itself refuses to do anything when a prefix is set.
Now nvm use will refuse to work if $PREFIX or npm config get prefix is set, and will provide instructions about how to fix it.
Reopening, however, because I forgot about $NPM_CONFIG_PREFIX.
Would be nice if this prefix thing could be omitted somehow through .nvmrc (just thinking).
@leomoreno in what way? The whole concept of PREFIX is incompatible with nvm.
If the suggested fix is to nvm use --delete-prefix vx.x.x, what if --delete-prefix is configurable?
I added that line to my .bash_profile so I end up with the node version I need to use.
May be I'm misunderstanding and should not nvm use --delete-prefix vx.x.x?
I was just thinking in something that let you delete-prefix at .nvmrc level, some kind of flag or similar. 🤷♂️ (that will make it easier to deal inside scripts)
@elmorenocivitas --delete-prefix should be a command that's only needed once, and manually, after that your machine ideally never has a prefix to delete again :-)
@ljharb for some reason it's necessary all the times here.
I'll double check the discussion above to see what's the issue.
Thanks for the fast answer!
I followed this comment to solve my issue.
#1245 (comment)