Bash 用于更改 NVM 节点版本的脚本

Bash script for changing NVM Node version

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

  • xx projname => cd ~/folder_1/projname and use node version 6 on nvm if nvm is currently using some other version
  • yy projname => cd ~/folder_2/projname and use node version 4 on nvm if nvm is currently using some other version

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

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

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

run nvm current and see if index of v6 is false, and then run nvm use v6

但我是 bash 的新手,似乎无法找到执行此操作的方法。 TIA!

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

$ nvm current
v6 <blabla>

所以你需要捕捉 nvm current 输出的第一个词:

read version _ <<< $(nvm current)

那么就是和"v6"比较这个值了。我会使用:

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

总计:

function yy {
    cd ~/folder_2/""
    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