公司node14 github开源项目18,是否感觉每次都在终端手动切换比较费劲
本文介绍了我如何使用一个简单的shell脚本,自动在不同项目间切换Node版本
这种方法在我的mac中一直使用,非常方便,希期对你有所帮助
现状
- 公司项目存放于 company-project 文件夹,用Node 14
- GitHub项目存放于 github-project 文件夹,使用Node 18
分析
思路:终端当前路径是否包含 github-project 或者company-project来切换对应node版本
如果能在打开终端的时候自动切换node版本,这是比较好的效果 -> 那么需要在终端打开时执行一个初始化脚本 -> gpt问问

终端的
~/.zshrc文件就是终端打开时执行的默认脚本
推测 `source /Users/username/init.sh 会执行init.sh脚本,简单验证过之后,发现是这样的
实现
- 创建一个 shell 脚本文件
zsh-node-select.sh,内容如下:
#!/bin/sh
# 获取当前路径
current_path="$PWD"
node_14_folders=('company-project')
node_18_folders=('github-project' 'another-folder-using-node-18')
# 检查路径是否包含在数组中
contains_folder() {
local folder_array=("$@")
for folder in "${folder_array[@]}"; do
if echo "$current_path" | grep -q "$folder"; then
return 0
fi
done
return 1
}
# 检查并切换 Node
if contains_folder "${node_14_folders[@]}"; then
fnm use 14
elif contains_folder "${node_18_folders[@]}"; then
fnm use 18
else
fnm use 18 # 默认使用node18
fi
切换node版本,我用的是 fnm ,在mac上安装配置2分钟完成,参考这篇mac fnm安装配置
运行 chmod +x zsh-node-select.sh 使脚本可执行
zshrc文件中添加如下代码:

export CUSTOM_SCRIPT_PATH="/Users/neoyuan/bin"
# 启动zsh之后执行初始化脚本 start
source ${CUSTOM_SCRIPT_PATH}/zsh-node-select.sh
# 启动zsh之后执行初始化脚本 end
效果检验:
- 在
company-project文件夹下,终端打开时,node版本自动切换为14 - 在
github-project文件夹下,终端打开时,node版本自动切换为18

非常妙,在终端打开时,自动切换node版本
上面的代码都是gpt编写的,感谢ai扩展了我的实践能力,希望这个小技巧对你有所帮助,有其他的切换方式欢迎在留言
期待和大家一起学习成长~