zsh (nvm) 启动时间优化

这个是困扰了我好几年的问题。

使用 time zsh -i -c exit 可以看到 zsh 的启动时间。
本来都已经习惯了,今天突发奇想研究了一下,发现是 nvm 拖慢了我的 zsh。

解决方案

搜了一下 nvm 的 issue,找到了 解决方案

  1. 编辑原先的 .zshrc,把 下方 nvm 启动的代码删除。
1
2
3
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh"
[ -s "$NVM_DIR/bash_completion" ] && . "$NVM_DIR/bash_completion"
  1. 添加下方代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
if [[ ! -a ~/.zsh-async ]]; then
git clone git@github.com:mafredri/zsh-async.git ~/.zsh-async
fi
source ~/.zsh-async/async.zsh

export NVM_DIR="$HOME/.nvm"
function load_nvm() {
[ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh"
[ -s "$NVM_DIR/bash_completion" ] && . "$NVM_DIR/bash_completion"
}

# Initialize worker
async_start_worker nvm_worker -n
async_register_callback nvm_worker load_nvm
async_job nvm_worker sleep 0.1

效果

1
2
time zsh -i -c exit
zsh -i -c exit 0.07s user 0.09s system 75% cpu 0.215 total
# nvm, zsh
Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×