Npm “如何运行”;nvm";在;哦,我的zsh;?

Npm “如何运行”;nvm";在;哦,我的zsh;?,npm,terminal,oh-my-zsh,nvm,Npm,Terminal,Oh My Zsh,Nvm,系统中有一个通过nvm安装的nodejs。该命令未运行npm。 控制台是ohmyzsh您可以通过在~/.zshrc中添加以下行来使用或启用它 export NVM_DIR=~/.nvm [ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh" echo 'export NVM_DIR=~/.nvm' >> ~/.zshrc echo '[ -s "$NVM_DIR/nvm.sh" ] &&

系统中有一个通过
nvm
安装的
nodejs
。该命令未运行
npm
。 控制台是
ohmyzsh

您可以通过在~/.zshrc中添加以下行来使用或启用它

 export NVM_DIR=~/.nvm
 [ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh"
echo 'export NVM_DIR=~/.nvm' >> ~/.zshrc
echo '[ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh"' >> ~/.zshrc
额外:

为了更快地初始化shell,我使用了
lazynvm
,它只在需要时加载节点

lazynvm() {
  unset -f nvm node npm
  export NVM_DIR=~/.nvm
  [ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh"  # This loads nvm
}

nvm() {
  lazynvm 
  nvm $@
}

node() {
  lazynvm
  node $@
}

npm() {
  lazynvm
  npm $@
}

参考资料:

我发现有一个随oh my zsh提供的nvm插件(这与lukechilds插件不同)。在简短的检查之后,我认为它在加载时添加了对
.zshrc
的必要修改,因此简单地将
nvm
添加到
.zshrc
中的插件列表中也应该可以(对我来说也是如此)


我没有通过谷歌找到关于默认nvm插件的更多详细信息,因此我不知道这是否是“转到”解决方案。

从Bash切换到Oh My Zsh

如果您已经安装了
nvm
,并且正在从
bash
切换到
oh my zsh
,您只需打开
.zshrc
文件,添加
nvm
插件,该插件包含在
oh my zsh
中:

  • 使用以下命令在nano中打开zsh配置文件
    .zshrc
    nano~/.zshrc
  • 向下滚动到显示
    plugins=(git)
    的位置,并在括号内添加
    nvm
    ,使其显示为
    plugins=(git-nvm)
    (用空格分隔插件)
  • control
    +
    O
    (在macOS上),然后按
    enter
    ,保存,然后按
    control
    +
    X
    退出
  • 然后打开一个新的终端窗口/选项卡,并输入
    nvm ls
    以确认其工作。请注意,您必须为shell打开一个新窗口/选项卡,才能使用最新更新的
    .zshrc
    配置(或输入
    source~/.zshrc
    等)

  • 来源:

    一个更简单的解决方案是使用默认提供的:

    它还自动为nvm提供源,因此您无需手动执行 在您的.zshrc中

  • git克隆https://github.com/nvm-sh/nvm.git ~/.nvm
  • cd~/.nvm&git checkout v0.35.1
    (当前最新版本)
  • nvm
    添加到您的
    ~/.zshrc
    。例如:
    plugins=(…nvm)
  • 我强烈建议使用,以避免外壳启动时间缓慢:

    # Add every binary that requires nvm, npm or node to run to an array of node globals
    NODE_GLOBALS=(`find ~/.nvm/versions/node -maxdepth 3 -type l -wholename '*/bin/*' | xargs -n1 basename | sort | uniq`)
    NODE_GLOBALS+=("node")
    NODE_GLOBALS+=("nvm")
    
    # Lazy-loading nvm + npm on node globals call
    load_nvm () {
      export NVM_DIR=~/.nvm
      [ -s "$(brew --prefix nvm)/nvm.sh" ] && . "$(brew --prefix nvm)/nvm.sh"
    }
    
    # Making node global trigger the lazy loading
    for cmd in "${NODE_GLOBALS[@]}"; do
      eval "${cmd}(){ unset -f ${NODE_GLOBALS}; load_nvm; ${cmd} \$@ }"
    done
    

    使用自制软件安装nvm

  • brew安装nvm

  • 编辑您的系统配置

  • esc>:wq
    保存文件

  • 重新加载配置
    source$(brew--前缀nvm)/nvm.sh

  • 查看nvm版本

    nvm -v
    

  • 享受它。

    这对我来说在Ubuntu 20.04上很有效

    安装或更新nvm

    wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.37.2/install.sh | bash
    
    添加你的~/.zshrc

     export NVM_DIR=~/.nvm
     [ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh"
    
    echo 'export NVM_DIR=~/.nvm' >> ~/.zshrc
    echo '[ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh"' >> ~/.zshrc
    
    在当前shell环境中加载

    source ~/.zshrc
    
    检查nvm版本

    nvm -v
    

    谢谢你详细的回答。我认为改进这个答案的唯一方法是:添加一个标题(从Bash移动到zsh)并添加一些换行符谢谢@duichwer的建议。我刚刚做了这些编辑。这是正确的答案,请忽略其他lol。如果有人使用Vim进行开发,延迟加载会导致使用tsserver的自动完成失败,因为在路径中找不到tsserver。最好只使用即时加载IMHO。如果我将其添加到~/.zshrc,运行nvm时会得到“未找到命令”?我该如何使用它?确保你的.zshrc已经加载:你可以键入“lazy”,然后按Tab键查看ZSH自动完成是否显示你懒惰。如果没有,请检查您的shell配置或ZSH配置,以确保它正在加载
    。zshrc
    在撰写本文时使用oh my ZSH插件,添加
    nvm
    作为插件对我在Mac上不起作用(不过,操作系统不应该是一个因素)。我仍然得到
    zsh:command-not-found:nvm
    。我将尝试手动添加。我遇到了相同的问题。我可以知道你所说的手动添加是什么意思吗?
    source$(brew--前缀nvm)/nvm。我缺少的是sh
    。谢谢谢谢,这解决了我的问题。很高兴我在重新安装之前尝试了这个。这真的帮助了我。谢谢