nvm 快速安装教程

news/2024/12/2 13:29:18/文章来源:https://www.cnblogs.com/chenyablog/p/18581716

https://brew.idayer.com/install/nvm-for-nodejs

nvm作为一款node的版本管理工具,在前端开发中是必不可少的,但是因为GitHub的特殊性,导致很多人是无法用官方教程安装成功,本文旨在整理出如德芙般丝滑的安装教程。

本文介绍的安装方法,你可以理解为通过仓库镜像的方式安装。

如果你能正常稳定访问GitHub,则无需通过本文的加速方式安装,但是仍然可以借鉴安装流程。

安装

国内加速脚本

export NVM_SOURCE=https://gitee.com/mirrors/nvm.git
curl -o- https://gitee.com/mirrors/nvm/raw/master/install.sh | bash

检验安装是否成功

command -v nvm

执行后如果显示nvm则表示已经安装成功。

如果遇到nvm命令找不到的问题,请查阅文末的“FAQ”。

配置

1. 设置为系统默认node

因为nvm安装的结果都是下面这样的格式:

/Users/neo/.nvm/versions/node/v14.17.4/bin/node

为了确保在所有的shell以及ide中都可以正常工作,我们需要设置把nvm安装的node设置为系统默认。

nvm alias default node

2. 设置node镜像

这里是给安装node设置镜像。

export NVM_NODEJS_ORG_MIRROR=https://npmmirror.com/mirrors/node
nvm install node
 
// 或者
NVM_NODEJS_ORG_MIRROR=https://npmmirror.com/mirrors/node nvm install 4.2

长期替换可以使用下面的设置:

echo 'export NVM_NODEJS_ORG_MIRROR="https://npmmirror.com/mirrors/node"' >> ~/.zshrc

注意! 上面脚本是把配置写入文件.zshrc,你如果对此不了解,请参考FAQ,确定是否更换为.bash_profile

更新

重新执行安装脚本即可。

安装node

安装最新版本:

nvm install node # "node"代表最新版本

安装指定版本:

nvm install 14.16.1 # or 10.10.0, 8.9.1, etc

通过ls-remote可以查看所有可安装的版本列表:

nvm ls-remote

然后使用use启用安装的版本:

// 最新版本
nvm use node
 
// 指定版本
nvm use 6.14.4

你也可以通过which命令查看已安装node所在目录:

nvm which 5.0

通过以下命令可以安装最新版npm

nvm install-latest-npm

设置终端默认node

nvm包含以下几个别名(alias):

  • node: 已安装的node最新版
  • iojs: 已安装的io.js最新版
  • stable: 已废弃,现在是node的别名
  • unstable: 已废弃

当我们安装了新版的node之后,nvm默认还会指向旧版本,通过执行以下命令将node别名指向到最新版。

这样可以解决node找不到的问题。

nvm alias default node

如果你不想指向已安装的最新版node,可以直接指向版本号,比如:

nvm alias default 16.20.1

多node环境下使用

在项目中使用不同版本node

你可以在项目根目录中创建.nvmrc来指定node版本,文件写入想要的版本号。

14.16.1

然后在根目录使用nvm use即可,缺点就是每次都要手动执行,如果想实现自动化可以按照下面的设置。

bash

把下面内容追加到~/.bashrc

cdnvm() {
cd "$@";
nvm_path=$(nvm_find_up .nvmrc | tr -d '\n')
 
# If there are no .nvmrc file, use the default nvm version
if [[ ! $nvm_path = *[^[:space:]]* ]]; then
 
declare default_version;
default_version=$(nvm version default);
 
# If there is no default version, set it to `node`
# This will use the latest version on your machine
if [[ $default_version == "N/A" ]]; then
nvm alias default node;
default_version=$(nvm version default);
fi
 
# If the current version is not the default version, set it to use the default version
if [[ $(nvm current) != "$default_version" ]]; then
nvm use default;
fi
 
elif [[ -s $nvm_path/.nvmrc && -r $nvm_path/.nvmrc ]]; then
declare nvm_version
nvm_version=$(<"$nvm_path"/.nvmrc)
 
declare locally_resolved_nvm_version
# `nvm ls` will check all locally-available versions
# If there are multiple matching versions, take the latest one
# Remove the `->` and `*` characters and spaces
# `locally_resolved_nvm_version` will be `N/A` if no local versions are found
locally_resolved_nvm_version=$(nvm ls --no-colors "$nvm_version" | tail -1 | tr -d '\->*' | tr -d '[:space:]')
 
# If it is not already installed, install it
# `nvm install` will implicitly use the newly-installed version
if [[ "$locally_resolved_nvm_version" == "N/A" ]]; then
nvm install "$nvm_version";
elif [[ $(nvm current) != "$locally_resolved_nvm_version" ]]; then
nvm use "$nvm_version";
fi
fi
}
alias cd='cdnvm'
cd $PWD

zsh

把下面内容追加到~/.zshrc

# place this after nvm initialization!
autoload -U add-zsh-hook
load-nvmrc() {
local node_version="$(nvm version)"
local nvmrc_path="$(nvm_find_nvmrc)"
 
if [ -n "$nvmrc_path" ]; then
local nvmrc_node_version=$(nvm version "$(cat "${nvmrc_path}")")
 
if [ "$nvmrc_node_version" = "N/A" ]; then
nvm install
elif [ "$nvmrc_node_version" != "$node_version" ]; then
nvm use
fi
elif [ "$node_version" != "$(nvm version default)" ]; then
echo "Reverting to nvm default version"
nvm use default
fi
}
add-zsh-hook chpwd load-nvmrc
load-nvmrc

安装时迁移全局npm包

执行时通过reinstall-packages-from参数指定旧的node版本,这样可以把指定版本内npm全局安装的包迁移到当前的node版本。

nvm install v12.0.0 --reinstall-packages-from=10.0

FAQ

nvm命令找不到(command not found)

需要手动配置环境变量。

执行命令echo $SHELL,根据结果判断写入的文件:

  • /bin/zsh => zsh => .zshrc
  • /bin/bash => bash => .bash_profile

.zshrc

echo '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"' >> ~/.zshrc
source ~/.zshrc

.bash_profile

echo '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"' >> ~/.bash_profile
source ~/.bash_profile

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/845401.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

十、Spring Boot集成Spring Security之HTTP请求授权

Spring Security最新基于HTTP请求授权配置详解:工作原理,授权配置,异常处理,测试接口,案例源码目录前言一、HTTP请求授权工作原理二、HTTP请求授权配置1、添加用户权限2、配置ExceptionTranslationFilter自定义异常处理器3、HTTP请求授权配置三、测试接口1、测试类2、测试…

博客园主页皮肤设置 - 第三版

基本设置侧边栏 <script type="text/javascript">window.cnblogsConfig = {info: {name: A-刘晨阳, // 用户名startDate: 2021-10-14, // 入园时间,年-月-日。入园时间查看方法:鼠标停留园龄时间上,会显示入园时间avatar: https://img2024.cnblogs.com/blog…

11.27实验 25:访问者模式

[实验任务一]:打包员 在我们课堂上的“购物车”的例子中,增加一个新的访问者:打包员,负责对购物车中货物装包。 实验要求: 1. 画出对应的类图;2. 提交源代码; #include <iostream> #include <string> #include <list> using namespace std;class Prod…

11.29实验二:逻辑回归算法实现与测试

实验二:逻辑回归算法实现与测试 一、实验目的 深入理解对数几率回归(即逻辑回归的)的算法原理,能够使用 Python 语言实现对数 几率回归的训练与测试,并且使用五折交叉验证算法进行模型训练与评估。二、实验内容 (1)从 scikit-learn 库中加载 iris 数据集,使用留出法留出…

11.25实验 23:策略模式

[实验任务一]:旅行方式的选择 旅游的出行方式有乘坐飞机旅行、乘火车旅行和自行车游,不同的旅游方式有不同的实现过程,客户可以根据自己的需要选择一种合适的旅行方式。 实验要求: 1. 画出对应的类图;2. 提交源代码; package strategy;public class Person {private Tour…

vxe-table 设置斑马线条纹样式

vxe-table 设置斑马线条纹样式,通过设置 stripe 参数 官网:https://vxetable.cn 表格<template><div><vxe-grid v-bind="gridOptions"></vxe-grid></div> </template><script> export default {data () {const gridOpti…

Lsky Pro挂载alist

首先需要去修改lsky代码,如果是docker可以 docker exec -it lsky-pro /bin/bash 然后安装个vim apt install vim cd app cd Services/ ls vi ImageService.php 然后vim输入 :set nu 显示行号,然后找到345行,粘贴进去 authType => 1, lwebdav存储策略问题 Issue #497 ls…

使用Go语言开发的一款轻量级可视化服务器监控监控软件

大家好,我是兔兔,兔兔答题的开发者。兔兔答题是一款简单、易用的答题系统,可应用于微信考试、付费考试、社会调查问卷、明星知识问答、员工培训考核、模拟自测、企业面试、试题库等多种场景。兔兔答题官网文档 进入给大家分享的内容是一款轻量级的日志可视化图形工具。在兔兔…

中电金信:源启数据资产平台的智能化与安全化的创新之道

中国企业在数智化转型中在数据治理领域遭遇多重挑战,包括在数据标准化、数据质量提升、数据分级分类,以及数据安全治理等。近几年,中电金信依托自主研发的智能数据底座“源启数据资产平台”,助力企业实现数据驱动的业务经营和精益管理。该平台不断吸纳全球数据治理领域的前…

【WEB漏洞】并发漏洞+经典案例

一、简单介绍1.1 并发漏洞概述1.2 并发漏洞常出现的功能点及解决方法1.2.1 用户注册/账户管理1.2.2 秒杀/抢购功能1.2.3 支付与结算1.2.4 文件读写1.2.5 日志记录1.2.6 缓存更新1.2.7 任务调度1.2.8 数据库操作1.2.9 队列消费1.2.10 多线程计算1.2.11 微服务间的并发请求1.2.12…

AI之旅:Microsoft.Extensions.AI 送惊喜,Cnblogs.DashScope.AI 表支持

https://www.cnblogs.com/cmt/p/185775742024年10月8日,微软 .NET 官方博客发布了一篇博文 Introducing Microsoft.Extensions.AI Preview – Unified AI Building Blocks for .NET,给 .NET 开发者带来了一个小惊喜,.NET 类库将增加一个统一的调用 AI 服务的抽象接口层。Mic…