首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >每当目录中有.nvmrc文件时,自动运行` `nvm use`

每当目录中有.nvmrc文件时,自动运行` `nvm use`
EN

Stack Overflow用户
提问于 2014-05-09 11:56:29
回答 10查看 66K关注 0票数 113

如何配置我的shell,使nvm use在每次目录中有.nvmrc文件时自动运行,并在没有.nvmrc文件时使用最新版本或全局配置?

EN

Stack Overflow用户

发布于 2021-11-07 02:01:46

对于那些使用Apple Silicon (M1) may的用户,您可能已经注意到,NVM尝试从nvm install上的源代码编译Node16版以下的版本,但失败了。以下是@Rotareti's and @Reynke's answer的更新,它使用Rosetta为Node < 16安装x86_64版本,同时为Node >= 16安装原生ARM版本,因为Node16是支持Apple Silicon的最早版本。

安装后,您可以从本机终端或rosetta终端使用nvm use来使用正确的版本,因此只有原始函数的nvm install部分会发生变化。

/opt/homebrew/opt/nvm/nvm.sh替换为nvm安装的路径。

~/.zshrc

代码语言:javascript
运行
复制
# place this after nvm initialization!
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
      # check if we're in a native (ARM) terminal
      if [[ $(uname -p) == "arm" ]]; then
        local nvmrc_remote_version=$(nvm version-remote "$(cat "${nvmrc_path}")")

        if printf '%s\n%s\n' v16.0.0 "${nvmrc_remote_version}" | sort -VC; then
          # arm and node >= v16; install native node
          nvm install
        else
          # arm and node < v16; install x64 node using rosetta
          arch -x86_64 zsh -c '. "/opt/homebrew/opt/nvm/nvm.sh"; nvm install'
          nvm use
        fi
      else
        # not arm
        nvm install
      fi
    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
票数 1
EN
查看全部 10 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23556330

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档