nvm-sh / nvm

Node Version Manager - POSIX-compliant bash script to manage multiple active node.js versions

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

.npmrc prefix override nvm

SeeThruHead opened this issue · 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.

Also $PREFIX, apparently, thanks to #692.

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.

commented

Can this be closed since 7ea15a7?

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)