Tags: #lazy #load #nvm #node
# lazyload nvm
# all props goes to http://broken-by.me/lazy-load-nvm/
# grabbed from reddit @ https://www.reddit.com/r/node/comments/4tg5jg/lazy_load_nvm_for_faster_shell_start/
#
# NOTE: this will cause some confusing behaviour when opening fresh terminal prompt
# in that a previously installed command (e.g. npm install -g dockly) won't exist
# e.g. executing the `dockly` command will fail unless you execute `nvm` first
# this is because we're lazy loading nvm and so it won't auto-load its default node version
lazynvm() {
unset -f nvm node npm
export NVM_DIR=~/.nvm
# shellcheck source=/dev/null
[ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh" # This loads nvm
}
nvm() {
lazynvm
nvm "$@"
}
node() {
lazynvm
node "$@"
}
npm() {
lazynvm
npm "$@"
}
# UPDATE:
#
# the following was added dynamically to .bashrc but I move it to .localrc instead
# note: manually added --no-use to prevent it loading nvm on each shell load
# so to load npm/node, execute: nvm use node
#
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" --no-use
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"