修改NVM节点版本的Bash脚本

Bash script for changing NVM Node version

本文关键字:Bash 脚本 版本 NVM 节点 修改      更新时间:2023-09-26

我正试图为我的.bash_profile添加别名,以执行以下操作:

  • xx projname => cd ~/folder_1/projname,使用节点版本如果nvm正在使用其他版本
  • yy projname => cd ~/folder_2/projname,如果nvm当前使用其他版本,则在nvm上使用节点版本4

我目前已经实现了所有的东西,除了最后一部分,即if nvm is currently using some other version,像这样:

function xx { cd ~/folder_1/"$1"; nvm use v6;}
function yy { cd ~/folder_2/"$1"; nvm use v4;}

处理未完成任务的最好方法是什么?我想要的是这样的:

运行nvm current,查看v6的index是否为false,然后运行nvm use v6

但是我真的是bash的新手,似乎找不到一个方法来做这个。蒂娅!

您想要获得版本。从评论中你说它是这样的:

$ nvm current
v6 <blabla>

所以您需要捕获nvm current输出的第一个单词:

read version _ <<< $(nvm current)

然后就是将值与"v6"进行比较的问题。我会使用:

if [ "$version" == "v6" ]; then
   ...
fi

一起:

function yy {
    cd ~/folder_2/"$1"
    read version _ <<< $(nvm current)
    if [ "$version" == "v6" ]; then
        nvm use v4
    fi
}

我使用这个脚本来自动更改我的Node版本,它与Oh-my-zsh一起工作,确保你安装了nvm,然后将下面的脚本添加到你的。zshrc文件

export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && '. "$NVM_DIR/nvm.sh"  # This loads nvm
[ -s "$NVM_DIR/bash_completion" ] && '. "$NVM_DIR/bash_completion"  # This loads nvm bash_completion
autoload -U add-zsh-hook
load-nvmrc() {
    local node_version="$(nvm version)"
    local nvmrc_path="$(nvm_find_nvmrc)"
    if [ -n "$nvmrc_path" ]; then
        local nvmrc_node_version=$(nvm version "$(cat "${nvmrc_path}")")
        if [ "$nvmrc_node_version" = "N/A" ]; then
            nvm install
        elif [ "$nvmrc_node_version" != "$node_version" ]; then
            nvm use
        fi
    elif [ "$node_version" != "$(nvm version default)" ]; then
        echo "Reverting to nvm default version"
        nvm use default
    fi
}
add-zsh-hook chpwd load-nvmrc
load-nvmrc