Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

Holy heck, I just profiled my zsh initialization and nvm was the big source of bloat, holy hell. Similar setup as you (M4 MBP), same amount of startup bloat. Lazy loading it fixes it.

GPT-5.2 changed the nvm initialization script to:

  export NVM_DIR="$HOME/.nvm"
  
  _nvm_lazy_load() {
  unset -f nvm node npm npx _nvm_lazy_load
  [ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh"
  }
  
  nvm() { _nvm_lazy_load; nvm "$@"; }
  node() { _nvm_lazy_load; command node "$@"; }
  npm() { _nvm_lazy_load; command npm "$@"; }
  npx() { _nvm_lazy_load; command npx "$@"; }




That's why I switched to Mise (https://mise.jdx.dev). Having new terminal sessions taking up hundreds of milliseconds because of nvm isn't the end of the world, but it's annoying when you're in the middle of something.

Mise reads in your .nvmrc files so you don't have to configure anything new.


Although this is what Opus recommends, it will give you many issues as you don’t really have any node runtimes in the path (or worse if you do).

What I recommend is replacing it with $PATH=(a command to find the nvm default alias directory, detect the verion and load it from that specific version directory directly) so you always have default node in path and then lazy loading only nvm itself, so you can switch when you need to.

Sorry I don’t have the command handy as I’m on mobile but if you paste the above into Opus you’ll get it.


Thanks. I modified my comment to disclose that gpt 5.2 generated that modification. I'll try your suggestion.



Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: