# inspired by http://broken-by.me/lazy-load-nvm/ # not doing all globals, just the usual suspect NODE_COMMANDS=(nvm npm node npx yarn) load_nvm() { export NVM_DIR=~/.nvm [ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh" } for cmd in ${NODE_COMMANDS} do eval "${cmd}(){ unset -f ${NODE_COMMANDS}; load_nvm; ${cmd} \$@ }" done