#8 NVM 简易入门

nvm是一个node的版本管理工具,使用这个组件可以在一个系统上安装多个不同版本的node,这极大方便了程序开发时的调试工作。

安装 NVM

安装 curl 并执行 nvm 安装脚本

 sudo apt install curl
 curl https://raw.githubusercontent.com/creationix/nvm/master/install.sh | bash   

安装 Node.js

安装最新版本的 Node.js

 nvm install node # "node"是最新版的一个别名

安装最新的 LTS 版 Node.js

 nvm install --lts 

需要安装指定的LTS版本,可以在 --lts=<LTS name> 加上代号。carbon 为v8最新,dubnium 为v10最新,erbium 为v12最新,fermium为v14最新。

安装指定版本的 Node.js

 nvm install 13.14.0

卸载指定版本的 node.js

 nvm uninstall 13.14.0

最后安装的版本将被设置为默认版本

NVM 常用命令

列出已安装的所有 node.js 版本

 nvm ls

列出可安装的所有 node.js 版本

 nvm ls-remote

切换到指定版本的 node.js

 nvm use 13.14.0 

查看当前默认的 node.js 版本

 nvm current

升级当前的 node.js 的 npm 到最新版本

 nvm install-latest-npm

导入指定版本的 npm 包到当前版本的 node.js 中

 nvm reinstall-packages 13.14.0
 nvm run 

指定 node.js 版本来运行某个 node 脚本

 nvm exec 13.14.0 server.js 

.nvmrc 使用方法

在同一台服务器,用不同的 node.js 版本运行不同的 node 脚本,是否可行? 答案是肯定的,首先,我们需要在各个应用系统的根目录下生成一个.nvmrc 文件,注明版本号 然后利用 nvm run <系统启动文件> 的方式运行脚本即可。

假设我们当前的 node.js 版本为 最新版

 nvm use node

执行如下命令,写入 lts/* 到当前目录下的 .nvmrc 文件。

 echo "lts/* " > .nvmrc # 指定最新版的 lts

新建一个 app.js 文档,输入如下内容

 console.log(process.versions); # 输出当前运行的 node 版本到控制台

运行 app.js

 nvm run app.js

 Found '/home/msmn-2010/.nvmrc' with version <lts/*>
 Running node v14.15.5 (npm v6.14.11)

.nvmrc用来控制运行版本,用nvm run来启动脚本,便可以方便的完成一个服务器运行多个不同 node 版本的应用系统。

为了自动化完成上述切换操作,我们可以借助一个叫 avn 的工具。

NVM 和 N 的区别

还有一个叫 n 的工具,同样是 node 的版本管理工具。 主要区别在于,n 是作为 node 模块而存在的, nvm 是一个 shell 脚本,独立于node 和 npm ,n 使用简便,但会造成切换版本不彻底。

NVM 小知识

由于 nvm 安装的 node 以及 npm 都是高度独立的版本。切换的时候的确方便了,但也意味着我们安装过的 npm 包都得重新再装一次? 不,我们可以通过如下命令,导入特定的node 版本下的 node_modules 到新安装的 node 版本下。

安装最新版的 LTS ,并导入当前的 node_modules 包

nvm install "lts/*" --reinstall-packages-from=current 

引用

Node Version Manager https://github.com/creationix/nvm

n – Interactively Manage Your Node.js Versions https://github.com/tj/n

最終更新

役に立ちましたか?