Abe Estrada

Lazyload nvm

Tengo 4 años utilizando nvm para poder utilizar varias versiones de node en mi computadora, ya que varios proyectos requieren diferentes versiones y nvm fue lo más sencillo y ahora lo más popular para poder tener varias versiones de node instaladas. El único problema es que cada vez que abro la terminal, tarda 1 - 2 segundos en cargar, todo esto debido a nvm.

En pocas palabras, nvm soluciona mis problemas y me aguanto.

Luego me encontré con fnm que es similar y compatible con nvm, el desarrollador también tenía la misma frustación que yo, al intentar abrir la terminal a veces yo empezaba a escribir antes de que terminara de cargar. Pero fnm puede tener bugs, ya que es un software nuevo, y no quería arriesgarme.

Así que decidí googlear lazy load nvm con la intención de cargar nvm solamente cuando use node y una vez cargado así se mantiene, y encontré la solución.

Este pequeño “snippet” hace justo lo que necesitaba.

# 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/

lazynvm() {
  unset -f nvm node npm npx
  export NVM_DIR=~/.nvm
  [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm
  if [ -f "$NVM_DIR/bash_completion" ]; then
    [ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion
  fi
}

nvm() {
  lazynvm
  nvm $@
}

node() {
  lazynvm
  node $@
}

npm() {
  lazynvm
  npm $@
}

npx() {
  lazynvm
  npx $@
}

Fuente: fl0w/lazynvm.sh