公司node14 github开源项目node18,写了个脚本打开终端自动切换

394 阅读1分钟

公司node14 github开源项目18,是否感觉每次都在终端手动切换比较费劲

本文介绍了我如何使用一个简单的shell脚本,自动在不同项目间切换Node版本

这种方法在我的mac中一直使用,非常方便,希期对你有所帮助

现状

  • 公司项目存放于 company-project 文件夹,用Node 14
  • GitHub项目存放于 github-project 文件夹,使用Node 18

分析

思路:终端当前路径是否包含 github-project 或者company-project来切换对应node版本

如果能在打开终端的时候自动切换node版本,这是比较好的效果 -> 那么需要在终端打开时执行一个初始化脚本 -> gpt问问

img_2024_05_23_08_00_33.png

终端的 ~/.zshrc 文件就是终端打开时执行的默认脚本

推测 `source /Users/username/init.sh 会执行init.sh脚本,简单验证过之后,发现是这样的

实现

  1. 创建一个 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文件中添加如下代码:

img_2024_05_23_08_28_42.png

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-change.gif

非常妙,在终端打开时,自动切换node版本


上面的代码都是gpt编写的,感谢ai扩展了我的实践能力,希望这个小技巧对你有所帮助,有其他的切换方式欢迎在留言

期待和大家一起学习成长~