【问题标题】:Bash script for changing NVM Node version用于更改 NVM 节点版本的 Bash 脚本
【发布时间】:2017-01-04 13:25:40
【问题描述】:

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

  • xx projname => cd ~/folder_1/projname 并使用节点版本 如果 nvm 当前正在使用其他版本,则在 nvm 上为 6
  • 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的索引是否为假,然后运行nvm use v6

但我对 bash 真的很陌生,似乎无法找到一种方法来做到这一点。蒂亚!

【问题讨论】:

  • 我正在阅读这个问题,因为我遵循 bash 标签,所以对 node.js 了解不多。您能否指出检查您正在运行的 nvm 版本的方法是什么。会不会是nvm run node --version
  • nvm current 给出当前节点版本。输出通常为v6 nvm use <node-version> 切换节点版本
  • 所以第一个词总是 nvm 版本?此外,它是否显示在标准输出或标准错误中?你可以检查这句话nvm current 2>/dev/null。如果确实显示,则为标准输出;否则,stderr。
  • 是的。它确实显示在标准输出中

标签: javascript node.js bash version nvm


【解决方案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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

    • 成功了,谢谢。我只需要像这样使 if 条件有点狂野:if [[ "$version" == *"v6"* ]]; then
    猜你喜欢
    • 2021-02-28
    • 1970-01-01
    • 2019-05-16
    • 2018-04-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-08
    • 2020-07-05
    • 1970-01-01
    相关资源
    最近更新 更多