• NVM node 多版本管理


    介绍
    nvm 允许您通过命令行快速安装和使用不同版本的 Node
    例子:

    # 切换到 16 版本
    $ nvm use 16
    Now using node v16.9.1 (npm v7.21.1)
    # 查看当前 node 版本
    $ node -v
    v16.9.1
    
    # 切换到 14 版本
    $ nvm use 14
    Now using node v14.18.0 (npm v6.14.15)
    
    $ node -v
    v14.18.0
    
    # 安装 12 版本
    $ nvm install 12
    Now using node v12.22.6 (npm v6.14.5)
    
    $ node -v
    v12.22.6
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20

    安装

    $  curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.3/install.sh | bash
      % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                     Dload  Upload   Total   Spent    Left  Speed
    100 15916  100 15916    0     0  48511      0 --:--:-- --:--:-- --:--:-- 48376
    => Downloading nvm from git to '/root/.nvm'
    => Cloning into '/root/.nvm'...
    remote: Enumerating objects: 360, done.
    remote: Counting objects: 100% (360/360), done.
    remote: Compressing objects: 100% (306/306), done.
    remote: Total 360 (delta 40), reused 169 (delta 28), pack-reused 0
    Receiving objects: 100% (360/360), 219.95 KiB | 1001.00 KiB/s, done.
    Resolving deltas: 100% (40/40), done.
    * (HEAD detached at FETCH_HEAD)
      master
    => Compressing and cleaning up git repository
    
    => Appending nvm source string to /root/.bashrc
    => Appending bash_completion source string to /root/.bashrc
    => Close and reopen your terminal to start using nvm or run the following to use it now:
    
    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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23

    面的输出做了这些事情:运行上述任一命令都会下载脚本并运行它。该脚本将 nvm 存储库克隆到 ~/.nvm,并尝试将下面代码段中的源代码行添加到正确的配置文件(~/.bash_profile~/.zshrc~/.profile~/.bashrc)。
    安装完成之后,需要重新打开终端,则可以使用如下命令检查 nvm 版本

    $ nvm -v
    0.39.3
    
    • 1
    • 2

    脚本中使用 nvm 提示找不到

    #!/bin/bash
    nvm use 14
    
    • 1
    • 2

    运行该脚本后,发现提示 nvm 找不到这个命令(但是不使用命令行是可以使用的)
    GPT 的回答说可能是 shell 脚本运行时,没有正确加载 nvm 的环境变量,所以可以增加以下代码

    #!/bin/bash
    export NVM_DIR="$HOME/.nvm"
    [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" 
    
    nvm use 14
    
    • 1
    • 2
    • 3
    • 4
    • 5

    用法

    要下载、编译和安装最新版本的 node,请执行以下操作:

    nvm install node # "node" is an alias for the latest version
    
    • 1

    要安装特定版本的 node:

    nvm install 14.7.0 # or 16.3.0, 12.22.1, etc
    
    • 1

    安装的第一个版本成为默认版本。新的 shell 将以默认版本的 node(例如,nvm alias default)开始。
    您可以使用以下方式列出可用版本:

    nvm ls-remote
    
    • 1

    然后,在任何新的 shell 中只使用安装的版本:

    nvm use node
    
    • 1

    或者您可以运行它:

    nvm run node --version
    
    • 1

    或者,您可以在具有所需节点版本的子 shell 中运行任意命令:

    nvm exec 4.2 node --version
    
    • 1

    您还可以获取可执行文件的安装路径:

    nvm which 12.22
    
    • 1

    代替“14.7”或“16.3”或“12.22.1”之类的版本指针,您可以使用以下特殊的默认别名以及 nvm install、nvm usenvm runnvm execnvm which 等:

    • node:这将安装最新版本的 Node.js
    • iojs:这将安装最新版本的 io.js
    • stable:此别名已弃用,仅适用于 Node.js v0.12 和更早版本。目前,这是 node
    • unstable:这个别名指向 Node.js v0.11- 最后一个“不稳定”节点版本,自 1.0 后,所有 Node.js 版本都是稳定的。(在 SemVer 中,版本传达的是破损,而不是稳定性)。

    关于安装的软件

    可以看到,全局安装软件之后,它的路径是在指定版本的 node 目录下,所以,切换到不同的版本,拥有不同的软件

    $ npm install --global yarn
    
    > yarn@1.22.19 preinstall /root/.nvm/versions/node/v14.21.3/lib/node_modules/yarn
    > :; (node ./preinstall.js > /dev/null 2>&1 || true)
    
    /root/.nvm/versions/node/v14.21.3/bin/yarn -> /root/.nvm/versions/node/v14.21.3/lib/node_modules/yarn/bin/yarn.js
    /root/.nvm/versions/node/v14.21.3/bin/yarnpkg -> /root/.nvm/versions/node/v14.21.3/lib/node_modules/yarn/bin/yarn.js
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
  • 相关阅读:
    【图形学】18 光照模型(三、镜面反射的Shader实现)
    【English】语法之句子种类(陈述句、疑问句、祈使句、感叹句)
    数据结构——树形结构
    前端js调试如何复制console.log打印的对象或数组
    神奇工具 (支持Android系统)
    深入理解事务
    Hello Vue!
    【剑指Offer】7.重建二叉树
    TDengine支持多种写入协议,四种写入方式提效大全
    Prometheus、node_exporter、Grafana端口修改(端口占用)
  • 原文地址:https://blog.csdn.net/a1137588003/article/details/132891482