Like的世界

个人总结与随想

nvm简介——Debian/Ubuntu中管理多版本Node.js

| Comments

nvm是管理Node.js版本的工具,它支持在多个Node.js版本间切换。

一、安装

1
2
3
git clone https://github.com/creationix/nvm.git ~/.nvm
cd ~/.nvm
git checkout `git describe --abbrev=0 --tags`

激活nvm

1
. ~/.nvm/nvm.sh

为了每次登录后自动激活nvm,需将NMV_DIRnvm.sh和补齐加入bash的~/.bashrc(或zsh的~/.zshrc)

1
2
3
export NVM_DIR=~/.nvm
[ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh"
[ -r $NVM_DIR/bash_completion ] && . $NVM_DIR/bash_completion

在国内,为了加速下述安装,可在bash的~/.bashrc(或zsh的~/.zshrc)加入:

1
export NVM_NODEJS_ORG_MIRROR=https://npm.taobao.org/mirrors/node

二、常用命令

列表可安装的Node.js版本

1
nvm ls-remote

除了Node.js官方版本,还支持io.js

安装指定版本的Node.js

1
nvm install 10.16.2

它会自动下载指定版本的Node.js二进制包(不需要编译源码),安装在~/.nvm/versions/node

通常,最好安装最近的长周期版本:

1
nvm install --lts

卸载指定版本的Node.js

1
nvm uninstall 10.16.2

设置shell的Node.js版本

1
nvm use 10.16.2

它将Node.js指定版本的bin路径加入PATH.

还原环境变量PATH

1
nvm deactivate

迁移npm至新版本的Node.js

1
nvm install node --reinstall-packages-from=node

1
nvm install v10.16.2 --reinstall-packages-from=10.16.0

.nvmrc

它存储在工程根目录中,用于记录该工程依赖的Node.js版本

1
echo 10.16.2 > .nvmrc

进入工程目录(当前目录),运行

1
nvm use

将根据.nvmrc指定shell的Nodejs版本

三、升级nvm

1
2
3
cd $NVM_DIR
git fetch origin
git checkout `git describe --abbrev=0 --tags`

升级完成后,需要重新激活nvm

1
. $NVM_DIR/nvm.sh

四、制作Docker镜像

若不希望使用NodeJS的官方Docker镜像,可利用nvm创建镜像:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
FROM ubuntu:bionic
MAINTAINER ...

ENV DEBIAN_FRONTEND noninteractive
ENV NVM_NODEJS_ORG_MIRROR=https://npm.taobao.org/mirrors/node
ENV NODE_VERSION 10.16.2
ENV PATH /root/.nvm/versions/node/v$NODE_VERSION/bin:$PATH

RUN set -eux; \
    apt-get update; \
    apt-get install --no-install-recommends -y wget ca-certificates; \
    wget -O- https://raw.githubusercontent.com/creationix/nvm/v0.33.11/install.sh | bash; \
    apt-get remove --purge -y wget ca-certificates; \
    apt-get autoremove --purge -y; \
    apt-get clean; \
    rm -rf /var/lib/apt/lists/* /root/.nvm/.cache

Comments