最近开发项目比较多, 有最新的技术 vite7
+react9
, 也有很老的技术webpack3
+vite2
, 这个老项目需要用node12
, 我新项目用的node24
, 都会想着用nvm
做版本管理, 我也不例外, 不过nvm
也需要用命令手动切换, 好麻烦, 没办法我太懒了, 不想动, 因此我就想到了用.nvmrc
配置node
版本, 不过它也需要手动执行nvm use
, 不过可以不用带版本号了, 终于可以偷偷懒了, 但是我更懒, 想一点都不想动。因此我找到了现在的方法 zsh-hook, 下面我们一步步来学习一下。因为我现在使用的是macos, 因此这里只主要介绍macos方案。
nvm安装
- 下载
bash
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.3/install.sh | bash
或
bash
wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.3/install.sh | bash
- 配置环境变量
bash
vim ~/.zshrc
# 如果喜欢用vscode也可以用vscode打开
code ~/.zshrc
然后将下面内容复制到文件里面
bash
export NVM_DIR="$([ -z "${XDG_CONFIG_HOME-}" ] && printf %s "${HOME}/.nvm" || printf %s "${XDG_CONFIG_HOME}/nvm")"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm
- 重新加载终端
bash
source ~/.zshrc
开发zsh hook
注: 还是写在.zshrc
文件中, 和上面方法一样, 保存后仍要执行source ~/.zshrc
bash
# 自动切换 Node.js 版本
autoload -U add-zsh-hook
function nvm-auto-switch() {
if [[ -f .nvmrc ]]; then
local nvmrc_version=$(cat .nvmrc)
local current_version=$(nvm current)
if [[ ! "$current_version" =~ ^"$nvmrc_version" ]]; then
echo "当前版本: $current_version"
echo "需要切换到版本: $nvmrc_version"
nvm use
fi
fi
}
add-zsh-hook chpwd nvm-auto-switch
nvm-auto-switch
最后, 你需要自动切换的项目中需要加入.nvmrc
文件, 里面只需要写版本号, 例如v12
, 或者详细点v12.1.1
,这样你就可以根据不同项目自动切换node
版本啦!