关于node.js:nvm一个node版本管理工具

您所在的位置:网站首页 linux查看node版本 关于node.js:nvm一个node版本管理工具

关于node.js:nvm一个node版本管理工具

2023-03-01 23:22| 来源: 网络整理| 查看: 265

在日常的前端或node后盾开发中,应用的局部node依赖,可能不反对以后应用的node版本,这时候如果还想应用这个依赖欢快的开发,那只能切换node版本了。

然而,卸载和装置node的麻烦水平尽管还能承受,但想在其余我的项目,仍然应用高版本node的语法反对,要么应用webpack或gulp这种构建编译工具,要么就还是须要应用高版本node。

这时候,nvm呈现了。

nvm就是node版本管理器,应用它能够装置多个版本的node,而后能够通过一行命令,轻松切换以后应用的node版本。

也就是说,不必再卸载、装置了,想用哪个版本,就用nvm装置,安完一个指令切换就能够了!

上面基于mac零碎,进行一些步骤的解说。

装置

nvm 官网教程

卸载全局装置的node包

既然应用nvm‘托管’,那么本人之前装置的全局node包,就须要先卸载了,避免出问题。

npm、cnpm、yarn等都会被一并删掉,稍后须要从新安。

上面的指令,能够查看曾经装置在全局的模块node功能模块,以便删除这些全局模块后再依照不同的 node 版本从新进行全局装置 npm ls -g --depth=0

上面,是卸载步骤

也能够用 type -a node 查看一下门路,不同机器和不通装置形式,地位可能不一样。

删除全局 node_modules 目录,外面其实只有几个文件夹,是npm和应用npm全局装置的比方yarn、cnpm等 sudo rm -rf /usr/local/lib/node_modules 删除 node,其实就是卸载node环境了 sudo rm /usr/local/bin/node 删除全局 node 模块注册的软链,懂linux指令语法的,大略能够看懂,上面这行的命令,就是先进入到零碎的全局指令文件,筛选出其中依赖于 node_modules的所有指令(其实还是步骤1中的那几个指令),而后删除 cd /usr/local/bin && ls -l | grep "../lib/node_modules/" | awk '{print $9}'| xargs rm

能够应用终端输node -v,如果提醒node: command not found,就阐明卸载实现了

装置 nvm

装置nvm有多种形式,上面是两种形式,倡议在官网查看最新的装置语句(因为外网问题,很可能会装置失败,前面有其余装置形式):

curl形式:

curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.35.3/install.sh | bash

wget形式:

wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.35.3/install.sh | bash

下面两个语句,都会都会执行nvm的装置脚本,装置实现后,会有相似上面的打印:

=> Profile not found. Tried (as defined in $PROFILE), ~/.bashrc, ~/.bash_profile, ~/.zshrc, and ~/.profile. => Create one of them and run this script again => Create it (touch ) and run this script again OR => Append the following lines to the correct file yourself: export NVM_DIR="$HOME/.nvm" [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm => 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

意思是,咱们须要在~/.bashrc、~/.bash_profile、~/.zshrc、~/.profile这四个文件的任意一个,退出nvm的这行指令,保留敞开,而后重启终端,就能够应用nvm指令了。

v0.35.3版本的指令如下,能够间接在官网装置最新版本的nvm,粘贴最新版的指令(上面是官网提供的指令,也能够应用装置实现后,下面打印进去的指令):

export NVM_DIR="$([ -z "${XDG_CONFIG_HOME-}" ] && printf %s "${HOME}/.nvm" || printf %s "${XDG_CONFIG_HOME}/nvm")" [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm

这里举荐创立~/.bash_profile,如果有,则间接在外面的最初面加上下面的代码即,而后执行source ~/.bash_profile,重载此文件,nvm就能够失常应用了。

装置失败

下面的语句有可能会因为网络问题,而装置失败。

此时能够进入 nvm 官网教程(理论就是一个 github 页面),这里会提供多种装置形式(但最终貌似都须要克隆 nvm 的仓库,咱们能够手动克隆仓库了)。

然而, github 同样有无奈关上的可能,那咱们也关上国产 「githup」- 码云搜寻 nvm-sh,找到热血网友从 github 克隆至此的我的项目,一样的应用。

上面大抵解说其中比较简单的一种:

Git Install:

进入到 ~ 目录,应用 git 克隆 nvm 仓库:

cd ~/ git clone https://github.com/nvm-sh/nvm.git .nvm

进入,切换到最新版本分支(理论最新分支,可再去官网看一下):

cd .nvm git checkout v0.38.0

执行一下装置指令,这个指令霎时执行实现:

. ./nvm.sh

最初,再一下几个文件中的任意一个,~/.bashrc 、 ~/.profile ,或 ~/.zshrc,粘贴入一下代码:

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

最初的最初,让零碎从新读取一下这个文件,比方这个放进了 ~/.bashrc 文件中,那么执行:

source ~/.bashrc

实现,此时能够应用 nvm 了。

nvm应用

次要为如下一些指令:

性能 指令 列出以后已装置的node,和可装置的lts(长期反对稳定版)版本 nvm ls 列出所有近程服务器的版本 nvm ls-remote 装置指定版本,可含糊装置,倡议先查问后装置,比方 nvm install v11.11.0 nvm install 装置最新稳定版 node nvm install stable 删除已装置的指定版本,语法与install相似 nvm uninstall 设置一个默认版本,新关上的终端应用的版本 nvm alias default 给不同的版本号增加别名 nvm alias 勾销一个别名 nvm unalias 切换以后终端应用的版本,但只针对以后终端失效,不影响其余 nvm use 显示以后的版本 nvm current 删除已定义的别名 nvm unalias 在以后版本 node 环境下,从新全局装置指定版本号的 npm 包 nvm reinstall-packages 应用终端进入不同目录,avn 主动切换node版本

这个性能原本不须要,但近几年发现,业务和我的项目太多时,可能真的就很须要了。

比方,接管过去我的项目,应用的 node 版本可能形形色色;本人公司开发的我的项目,应用固定某个 node 版本;偶然本人钻研些新技术,又可能会应用最新版的。

原本是进入某个我的项目,就应用 nvm use 来切换一下,但总的来说很麻烦,每次关上终端都要来这么一下。

网上找了找,找到了这个工具: avn 。

首先新关上一个终端,保障当初应用的是默认版本的 node,这是因为 nvm 中,在不同的 node 版本下装置的全局依赖,是互不相通的。

这个工具是基于 node 的,咱们只须要默认 node 下全局装置,当每次应用终端进入不同目录时,node 默认都是版本,而后它会主动执行,切换到接下来你要指定的 node 版本。

关上终端后,先全局装置:

npm install -g avn avn-nvm avn-n

而后启动这个工具:

avn setup

留神:不晓得为什么,我应用node^11.11.0 装置的依赖们,就能够启动,而是用 node^12.21.0,它还是个长期反对版,应用这个版本装置的依赖,启动时却会报错 if (cb) cb.apply(this, arguments) 很奇怪,不过,你能够在 v11.11.0 下,装置依赖并启动,之后切换node版本也不会影响了,如果有影响,就在其余版本下也装置依赖。

接下来,就是去到你须要自定义 node 版本的我的项目,创立文件 .node-version ,内容间接写你须要的 node 版本,比方:

这个 node 版本,须要是你曾经用 nvm 装置过了的,否则会报错 avn could not activate node v14.15.0 。

v14.16.0

而后,在这个我的项目下重启终端,就会呈现提醒:

avn activated v14.16.0 via ../.node-version (avn-nvm v14.16.0)

此时这个终端应用的 node,就是 v14.16.0 了。

优化: 但下面这个办法,须要在每个自定义 node 版本的我的项目中,增加这个文件,很不敌对。

其实,咱们能够在把这个文件,放在这个我的项目的父级目录中,同样会失效,这样但凡应用同一个 node 版本的我的项目,都放在这个文件夹下,就很敌对了。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3