nvm介绍

  • github地址:nvm-sh

  • nvm ( Node Version Manager ),是一个nodejs的版本管理工具。通过对node和npm集中的版本管理主要解决了两个问题

  1. 统⼀解决了node和npm版本管理的问题,nvm提供了很⽅便的机制可以使我们在同⼀终端上安装多个
    版本的node和npm并且提供了快速切换版本的能⼒,这样为我们检测项⽬兼容性和bug定位提供了很
    ⼤的帮助。
  2. 解决了种种permission的相关问题,⾃此再也不⽤重复输⼊sudo来进⾏全局安装。

安装NVM

  • windows下可以使用scoop进行安装

    1
    2
    3
    $ scoop install nvm
    ....
    'nvm' (1.1.7) was installed successfully!
  • 官⽅推荐的两种安装⽅式:这二者需要网络条件良好。mac下可以使用使用brew的⽅式安装[不推荐]。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.35.0/install.sh | bash
    # or:
    wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.35.0/install.sh | bash
    # 示例
    curl -o- https://raw.fastgit.org/creationix/nvm/v0.35.0/install.sh | bash

    会输出如下:
    => Downloading
    nvm as script to '/root/.nvm'
    => 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
    提示信息可以看出,设置了环境变量,
  • Git方式安装

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    If you have git installed (requires git v1.7.10+):

    # clone this repo in the root of your user profile
    cd ~/
    git clone https://github.com/nvm-sh/nvm.git .nvm
    cd ~/.nvm
    # check out the latest version
    git checkout v0.39.3
    # activate nvm by sourcing it from your shell: .
    ./nvm.sh
    # Now add these lines to your ~/.bashrc, ~/.profile, or ~/.zshrc file to have it automatically sourced upon login: (you may have to add to more than one of the above files)

    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
    C:\Users\fulsun>nvm -v

NVM设置国内源

  • 由于网络问题导致下载速度慢,可以设置国内镜像提升速度

  • 指定 nvm 的镜像需要在环境配置中增加 NVM_NODEJS_ORG_MIRROR

  • 临时使用

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    # 临时方案,每次执⾏nvm安装时,执⾏
    export NVM_NODEJS_ORG_MIRROR=https://npm.taobao.org/mirrors/node

    [sun@cmcc#1 .nvm]$ export NVM_NODEJS_ORG_MIRROR=https://npm.taobao.org/mirrors/node
    [sun@cmcc#1 .nvm]$ nvm install --lts
    Installing latest LTS version.
    Downloading and installing node v12.14.0...
    Local cache found: ${NVM_DIR}/.cache/bin/node-v12.14.0-darwin-x64/node-v12.14.0-darwin-x64.tar.gz
    Computing checksum with shasum -a 256
    Checksums do not match: '8809eed989e9f63570b207a95e4decabe811103fd3fd05777fde07af32221eea' found, '5f3170b346b29e6902c0ca7e0993e3d1b4b650615348aa866de17ad965377048' expected.
    Checksum check failed!
    Removing the broken local cache...
    Downloading https://npm.taobao.org/mirrors/node/v12.14.0/node-v12.14.0-darwin-x64.tar.gz...
    ########################################## 58.8%
  • 永久⽅案,当然是将export语句放到 ~/.bashrc 中

1
2
3
export NVM_NODEJS_ORG_MIRROR=https://npm.taobao.org/mirrors/node
# 刷新环境变量
source /root/.bashrc
  • Windows下

    1
    2
    3
    4
    5
    6
    7
    $> nvm node_mirror https://npm.taobao.org/mirrors/node/
    $> nvm npm_mirror https://npm.taobao.org/mirrors/npm/

    # 也可在安装目录目录下找到setting.txt文件,打开后加上,
    # \scoop\persist\nvm\setting.txt
    node_mirror: https://npm.taobao.org/mirrors/node/
    npm_mirror: https://npm.taobao.org/mirrors/npm/

nvm常用指令

命令 说明
nvm arch 查看当前系统的位数和当前nodejs的位数
nvm list 查看已经安装的版本
nvm list installed 查看已经安装的版本
nvm list available 查看网络可以安装的版本
nvm install [arch] 安装制定版本的node 并且可以指定平台 version 版本号 arch 平台
nvm on 打开nodejs版本控制
nvm off 关闭nodejs版本控制
nvm proxy [url] 查看和设置代理
nvm node_mirror [url] 设置或者查看setting.txt中的node_mirror
nvm npm_mirror [url] 设置或者查看setting.txt中的npm_mirror
nvm uninstall 卸载指定的版本
nvm use [version] [arch] 切换指定的node版本和位数
nvm root [path] 设置和查看root路径
nvm version 查看当前的版本,version可简化为v。

nvm安装Node.js

  • Windows

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    # 查看nodejs可用版本
    C:\Users\fulsun>nvm list available

    | CURRENT | LTS | OLD STABLE | OLD UNSTABLE |
    |--------------|--------------|--------------|--------------|
    | 13.5.0 | 12.14.0 | 0.12.18 | 0.11.16 |
    | 13.4.0 | 12.13.1 | 0.12.17 | 0.11.15 |
    | 13.3.0 | 12.13.0 | 0.12.16 | 0.11.14 |
    | 13.2.0 | 10.18.0 | 0.12.15 | 0.11.13 |
    | 13.1.0 | 10.17.0 | 0.12.14 | 0.11.12 |
    | 13.0.1 | 10.16.3 | 0.12.13 | 0.11.11 |
    | 13.0.0 | 10.16.2 | 0.12.12 | 0.11.10 |
    | 12.12.0 | 10.16.1 | 0.12.11 | 0.11.9 |
    | 12.11.1 | 10.16.0 | 0.12.10 | 0.11.8 |
    | 12.11.0 | 10.15.3 | 0.12.9 | 0.11.7 |
    | 12.10.0 | 10.15.2 | 0.12.8 | 0.11.6 |
    | 12.9.1 | 10.15.1 | 0.12.7 | 0.11.5 |
    | 12.9.0 | 10.15.0 | 0.12.6 | 0.11.4 |
    | 12.8.1 | 10.14.2 | 0.12.5 | 0.11.3 |
    | 12.8.0 | 10.14.1 | 0.12.4 | 0.11.2 |
    | 12.7.0 | 10.14.0 | 0.12.3 | 0.11.1 |
    | 12.6.0 | 10.13.0 | 0.12.2 | 0.11.0 |
    | 12.5.0 | 8.17.0 | 0.12.1 | 0.9.12 |
    | 12.4.0 | 8.16.2 | 0.12.0 | 0.9.11 |
    | 12.3.1 | 8.16.1 | 0.10.48 | 0.9.10 |

    This is a partial list. For a complete list, visit https://nodejs.org/download/release

    # 安装nodejs
    nvm install v12.14.0

    # 查看已经安装的所有版本
    nvm ls

    # 使用某个版本
    nvm use v12.14.0

    # 检测
    C:\Users\fulsun> node -v
    v12.14.0

    C:\Users\fulsun> npm -v
    6.13.4
  • Linux

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    # 查看nodejs可用版本
    nvm ls-remote

    # 安装nodejs
    nvm install v12.14.0

    # 查看已经安装的所有版本
    nvm ls

    # 使用某个版本
    nvm use v12.14.0

linux下使⽤NVM

  • 安装完后,使⽤起来就⾮常简单明快了,以下是⼀些常⽤功能

  • 安装某⼀版本的node

    1
    2
    3
    4
    nvm install
    nvm install --lts #安装最新的lts版本的node
    nvm install node #安装最新版本的node
    nvm install 6.14.4 #安装node版本6.14.4
  • 列出所有node版本

    1
    2
    nvm ls #本机所有版本
    nvm ls -remote #远端所有版本
  • 切换、使⽤某⼀版本的node nvm use

    1
    2
    3
    nvm use --lts #使⽤最新的lts版本的node
    nvm use node #使⽤最新版本的node
    nvm use 6.14.4 #使⽤node版本6.14.4
  • 启动node

    1
    2
    3
    4
    nvm run
    nvm run --lts #启动最新的lts版本的node
    nvm run node #启动最新版本的node
    nvm run 6.14.4 #启动node版本6.14.4
  • 使⽤某⼀版本执⾏

    1
    nvm exec 4.2 node --version
  • 查询某⼀版本的安装位置

    1
    nvm which v12.14.0
  • 继承既有的node modules.

    • 可以使⽤ --reinstall-packages-from=node 来⾃动在新的node中安装上⼀版本已有的node modules
    1
    2
    nvm install node --reinstall-packages-from=node #从上⼀版本继承
    nvm install 6 --reinstall-packages-from=5 #从某⼀版本继承

Linux下卸载nvm

  • nvm的卸载是⼿动完成的,但是不复杂。
  1. ⾸先,删掉nvm⽂件

    1
    rm -rf "$NVM_DIR"
  2. 随后,修复环境变量,修改

    1
    2
    3
    4
    5
    ~/.bashrc (如果没有就去bash_profile找找)
    # 删掉以下这⼏⾏
    export NVM_DIR="$HOME/.nvm"
    [ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh"
    [ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion
  3. 搞定。

npm常用命令

  • 命令

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    npm install 安装模块
    npm uninstall 卸载模块
    npm update 更新模块
    npm outdated 检查模块是否已经过时
    npm ls 查看安装的模块
    npm init 在项目中引导创建一个package.json文件
    npm help 查看某条命令的详细帮助
    npm root 查看包的安装路径
    npm config 管理npm的配置路径
    npm cache 管理模块的缓存
    npm start 启动模块
    npm stop 停止模块
    npm restart 重新启动模块
    npm test 测试模块
    npm version 查看模块版本
    npm view 查看模块的注册信息
    npm adduser 用户登录
    npm publish 发布模块
    npm access 在发布的包上设置访问级别
    npm package.json的语法
  • npm使用国内镜像

    1
    2
    3
    4
    5
    npm config get registry # https://registry.npmjs.org/
    # 设置国内淘宝镜像
    npm config set registry https://registry.npm.taobao.org/
    # 还原官方
    npm config set registry https://registry.npmjs.org/

nrm管理npm源

nrm 是一个用来管理npm源的工具

  • 安装

    1
    sudo npm install -g nrm --registry=https://registry.npm.taobao.org
  • 查看

    1
    2
    3
    4
    5
    6
    7
    8
    9
    C:\Users\fulsun>nrm ls

    * npm -------- https://registry.npmjs.org/
    yarn ------- https://registry.yarnpkg.com/
    cnpm ------- http://r.cnpmjs.org/
    taobao ----- https://registry.npm.taobao.org/
    nj --------- https://registry.nodejitsu.com/
    npmMirror -- https://skimdb.npmjs.com/registry/
    edunpm ----- http://registry.enpmjs.org/
  • nrm 常用命令

    1
    2
    3
    4
    5
    nrm ls # 列出npm源
    nrm use <registry> #选择源
    nrm add <registry> <url> [home] #增加源
    nrm delete <registry> #删除源
    nrm test #测速

windowns修改npm安装目录

  • 普通方式安装的默认的安装路径:C:/用户/[用户名]/AppData/Roming/npm/node_meodules

  • scoop安装的不用修改, 位置在 \scoop\apps\nvm\current\nodejs\nodejs\node_modules

  1. 打开CMD,查看配置

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    $  npm config ls
    ; cli configs
    metrics-registry = "https://registry.npmjs.org/"
    scope = ""
    user-agent = "npm/5.6.0 node/v8.11.3 win32 x64"

    ; builtin config undefined
    prefix = "C:\\Users\\XXX\\AppData\\Roaming\\npm"

    ; node bin location = C:\Users\sfuli\local\nodejs\node.exe
    ; cwd = C:\Users\sfuli\local\blog\zy
    ; HOME = C:\Users\sfuli
    ; "npm config ls -l" to show all defaults.
  2. 在其它物理盘建立文件夹如:D:\develop\nodejs\localnpm,将路径加入环境变量

  3. 重新设置

    1
    2
    3
    4
    5
    6
    npm config set prefix "D:\develop\nodejs\localnpm"
    npm config set cache "D:\develop\nodejs\localnpm\cache"

    # 或在~目录下新建一个".npmrc"文件
    prefix=C:\Users\fulsun\develop\nodejs\localnpm
    cache=C:\Users\fulsun\develop\nodejs\localnpm\cache
  4. 检查

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    npm config ls
    ; cli configs
    metrics-registry = "https://registry.npmjs.org/"
    scope = ""
    user-agent = "npm/5.6.0 node/v8.11.3 win32 x64"

    ; userconfig C:\Users\sfuli\.npmrc
    cache = "C:\\Users\\XXX\\local\\nodejs\\localnpm\\cache" //这里会改变
    prefix = "C:\\Users\\XXX\\local\\nodejs\\localnpm"

    ; builtin config undefined

    ; node bin location = C:\Users\sfuli\local\nodejs\node.exe
    ; cwd = C:\Users\sfuli\local\blog\zy
    ; HOME = C:\Users\sfuli
    ; "npm config ls -l" to show all defaults.

    需要将上面设置的路径(D:\develop\nodejs\localnpm)添加到环境变量path中

  5. 测试

    1
    2
    npm install express -g
    -g意思是安装到全局目录下,即 D:\develop\nodejs\localnpm下面的node_modules

YARN

  • 安装

    1
    npm install -g yarn
  • 换镜像

    1
    2
    3
    4
    5
    yarn config get registry
    # 设置国内镜像-淘宝镜像
    yarn config set registry https://registry.npm.taobao.org --global
    # 设置官方镜像
    yarn config set registry https://registry.yarnpkg.com
  • 配置

    1
    2
    yarn config get strict-ssl
    yarn config set strict-ssl false
  • 使用

    命令 说明
    yarn init 初始化一个新项目
    yarn add [package] 添加依赖包
    yarn add [package]@[version]
    yarn add [package]@[tag]
    yarn add [package] –dev -D 将依赖项添加到不同依赖项类别中
    yarn add [package] –peer
    yarn add [package] –optional
    yarn upgrade 升级所有依赖项,不记录在 package.json 中
    yarn upgrade [package]
    yarn upgrade [package]@[version]
    yarn upgrade [package]@[tag]
    yarn upgrade –latest 忽略版本规则,升级到最新版本,并且更新 package.json
    yarn remove [package] 移除依赖包
    yarnyarn install 安装项目的全部依赖
    yarn install –force 强制重新下载安装
    yarn global add [package] 全局安装
    yarn [global] list 列出当前项目的依赖
    yarn list –depth=0 限制依赖的深度
    yarn cache clean 清理缓存

NPM更新依赖

  • 简单更新

    1
    2
    3
    4
    5
    6
    # 查看npm最新版本
    npm view npm version
    # 查看所有版本
    npm view npm versions
    # 安装最新版本覆盖旧版本 npm update
    npm install npm@9.2.0 -g
  • 项目对应依赖包一般保存在 package.json 文件中,相对应版本号的形式为mojor.minor.patch

    • major 表示非兼容的重大 API 改变(主要的)

    • minor 表示向后兼容的功能性改变(次要的)

    • patch 表示向后兼容的 bug 修正(修补的)

      1
      2
      3
      * 匹配最新的 major 版本依赖包,eg:比如 *1.2.3 会匹配 x.x.x,
      ^ 匹配最新的 minor 版本依赖包,eg: ^1.1.0 可以更新匹配所有 1.x.x 的包,不会更新匹配 2.x.x
      ~ 匹配最新的 patch 版本依赖包,eg: ~1.1.0 可以更新匹配所有 1.1.x 的包,不会更新匹配 1.2.x
  • 更新指定依赖安装包(根据前缀符号更新,有时需要在 package.json 手动更改依赖包相应版本号再更新)

    1
    npm update tdesign-miniprogram -S  (--save/-S or --save-dev/-D)
  • 多个依赖包:

    1
    2
    3
    4
    5
    6
    7
    # 批量更新依赖包的话推荐两个库:npm-check-updates和npm-check
    # npm-check-updates:https://www.npmjs.com/package/npm-check-updates
    npm install -g npm-check-updates
    # 检查当前可升级依赖:
    ncu
    # 更新package.json文件:
    ncu -u