@@ -2111,19 +2111,35 @@ nvm_die_on_prefix() {
2111
2111
return 2
2112
2112
fi
2113
2113
2114
- if [ -n " ${PREFIX-} " ] && ! (nvm_tree_contains_path " $NVM_DIR " " $PREFIX " > /dev/null 2>&1 ); then
2114
+ # npm first looks at $PREFIX (case-sensitive)
2115
+ # we do not bother to test the value here; if this env var is set, unset it to continue.
2116
+ if [ -n " ${PREFIX-} " ]; then
2115
2117
nvm deactivate > /dev/null 2>&1
2116
- nvm_err " nvm is not compatible with the \" PREFIX\" environment variable: currently set to \" $PREFIX \" "
2118
+ nvm_err " nvm is not compatible with the \" PREFIX\" environment variable: currently set to \" ${ PREFIX} \" "
2117
2119
nvm_err ' Run `unset PREFIX` to unset it.'
2118
2120
return 3
2119
2121
fi
2120
2122
2121
- if [ -n " ${NPM_CONFIG_PREFIX-} " ] && ! (nvm_tree_contains_path " $NVM_DIR " " $NPM_CONFIG_PREFIX " > /dev/null 2>&1 ); then
2122
- nvm deactivate > /dev/null 2>&1
2123
- nvm_err " nvm is not compatible with the \" NPM_CONFIG_PREFIX\" environment variable: currently set to \" $NPM_CONFIG_PREFIX \" "
2124
- nvm_err ' Run `unset NPM_CONFIG_PREFIX` to unset it.'
2125
- return 4
2126
- elif ! nvm_has ' npm' ; then
2123
+ # npm normalizes NPM_CONFIG_-prefixed env vars
2124
+ # https://github.com/npm/npmconf/blob/22827e4038d6eebaafeb5c13ed2b92cf97b8fb82/npmconf.js#L331-L348
2125
+ # https://github.com/npm/npm/blob/5e426a78ca02d0044f8dd26e0c5f881217081cbd/lib/config/core.js#L343-L359
2126
+ #
2127
+ # here, we avoid trying to replicate "which one wins" or testing the value; if any are defined, it errors
2128
+ # until none are left.
2129
+ local NVM_NPM_CONFIG_PREFIX_ENV
2130
+ NVM_NPM_CONFIG_PREFIX_ENV=" $( command env | nvm_grep -i NPM_CONFIG_PREFIX | command tail -1 | command awk -F ' =' ' {print $1}' ) "
2131
+ if [ -n " ${NVM_NPM_CONFIG_PREFIX_ENV-} " ]; then
2132
+ local NVM_CONFIG_VALUE
2133
+ eval " NVM_CONFIG_VALUE=\"\$ ${NVM_NPM_CONFIG_PREFIX_ENV} \" "
2134
+ if [ -n " ${NVM_CONFIG_VALUE-} " ]; then
2135
+ nvm deactivate > /dev/null 2>&1
2136
+ nvm_err " nvm is not compatible with the \" ${NVM_NPM_CONFIG_PREFIX_ENV} \" environment variable: currently set to \" ${NVM_CONFIG_VALUE} \" "
2137
+ nvm_err " Run \` unset ${NVM_NPM_CONFIG_PREFIX_ENV} \` to unset it."
2138
+ return 4
2139
+ fi
2140
+ fi
2141
+
2142
+ if ! nvm_has ' npm' ; then
2127
2143
return
2128
2144
fi
2129
2145
0 commit comments