更改NVM Node版本的Bash脚本

3
我想在我的.bash_profile中添加一个别名,以执行以下操作:
  • xx projname => cd ~/folder_1/projname 并在nvm上使用node版本6,如果nvm当前正在使用其他版本的话
  • yy projname => cd ~/folder_2/projname 并在nvm上使用node版本4,如果nvm当前正在使用其他版本的话
目前我已经实现了除最后一部分之外的所有内容,即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 的索引是否为 false,然后运行 nvm use v6 但是我对 bash 还很陌生,似乎找不到做法。谢谢!

我正在阅读这个问题,因为我关注bash标签,所以对node.js的了解不是很多。你能指出检查正在运行的nvm版本的方法吗?可能是nvm run node --version吗? - fedorqui
nvm current 给出当前的 Node 版本。输出通常为 v6nvm use <node-version> 切换 Node 版本。 - nikjohn
所以第一个单词总是 nvm 版本?它会显示在 stdout 还是 stderr 中?您可以通过运行 nvm current 2>/dev/null 来检查。如果它显示了,那么它就是 stdout;否则,它就是 stderr。 - fedorqui
是的。它会显示在标准输出中。 - nikjohn
2个回答

2

您想获取版本信息。从评论中看到它可能长成这样:

$ 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
}

1
好的,谢谢。我只需要将if条件语句稍微像通配符一样改一下:if [[ "$version" == *"v6"* ]]; then - nikjohn

1
我正在使用这个脚本自动更改我的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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接