Ensure that if npm config get prefix is set to something outside nvm, that nvm use refuses to work.

Fixes #606.
This commit is contained in:
Jordan Harband
2015-09-21 04:47:37 -07:00
parent a1def71062
commit 1458de7293
4 changed files with 57 additions and 3 deletions

27
nvm.sh
View File

@@ -1267,9 +1267,17 @@ nvm_die_on_prefix() {
return 2
fi
if [ -n "$PREFIX" ] && ! (nvm_tree_contains_path "$NVM_DIR" "$PREFIX" >/dev/null 2>&1); then
nvm deactivate >/dev/null 2>&1
echo >&2 "nvm is not compatible with the \"PREFIX\" environment variable: currently set to \"$PREFIX\""
echo >&2 "Run \`unset PREFIX\` to unset it."
return 3
fi
if ! nvm_has 'npm'; then
return
fi
local NVM_NPM_PREFIX
NVM_NPM_PREFIX="$(npm config get prefix)"
if ! (nvm_tree_contains_path "$NVM_DIR" "$NVM_NPM_PREFIX" >/dev/null 2>&1); then
@@ -1283,7 +1291,7 @@ nvm_die_on_prefix() {
else
echo >&2 "Run \`$NVM_COMMAND\` to unset it."
fi
return 3
return 4
fi
fi
}
@@ -1596,11 +1604,15 @@ nvm() {
local PROVIDED_VERSION
local NVM_USE_SILENT
NVM_USE_SILENT=0
local NVM_DELETE_PREFIX
NVM_DELETE_PREFIX=0
shift # remove "use"
while [ $# -ne 0 ]
do
case "$1" in
--silent) NVM_USE_SILENT=1 ;;
--delete-prefix) NVM_DELETE_PREFIX=1 ;;
*)
if [ -n "$1" ]; then
PROVIDED_VERSION="$1"
@@ -1690,6 +1702,19 @@ nvm() {
echo "Now using node $VERSION$(nvm_print_npm_version)"
fi
fi
if [ "_$VERSION" != "_system" ]; then
local NVM_USE_CMD
NVM_USE_CMD="nvm use --delete-prefix"
if [ -n "$PROVIDED_VERSION" ]; then
NVM_USE_CMD="$NVM_USE_CMD $VERSION"
fi
if [ $NVM_USE_SILENT -eq 1 ]; then
NVM_USE_CMD="$NVM_USE_CMD --silent"
fi
if ! nvm_die_on_prefix "$NVM_DELETE_PREFIX" "$NVM_USE_CMD"; then
return 11
fi
fi
;;
"run" )
local provided_version