Windos 环境下动态切换 NodeJs 版本

前言

在工作与学习的过程中需要安装不同版本的 node,来回安装很不方便,就有了切换NodeJs版本的需求,因此从网上借鉴安装多个NodeJs 的方法,有感而发,设计了一个改良的方案。

涉及操作:
	- 系统环境变量
	- cmd 命令
	- .npmrc 配置文件
	- 文件结构编排

步骤

.1 系统环境变量

主要涉及这三处,Path变量 有则改,没有则新增 (NODE_HOME、NODE_HOME_GLOBAL 是自定义的,可以自己重命名)

变量描述
NODE_HOMENodeJs安装路径(C盘)
NODE_HOME_GLOBAL全局可读写路径(非C盘,C盘读写需要权限,所以结构一样,只有盘符不一样)
Path可执行文件路径集(暴露可执行命令)

在 Path变量内注册的路径下的可执行命令都可在 cmd 窗口内执行

新增以下两个值

变量 + 路径效果
%NODE_HOME%用于能够执行 node、npm 命令,该目录内存在 node、npm 的可执行文件
%NODE_HOME_GLOBAL%\node_global用于能够执行 cnpm、pnpm 命令,该目录内存在 cnpm、pnpm 的可执行文件(前置条件是已安装cnpm,pnpm)

在这里插入图片描述

.2 修改.npmrc

.npmrc 文件内是可以引用系统环境变量的, 格式 ${value},这块是动态切换的核心之一。

# 测试: npm i express -g
# ${} 获取的是系统环境变量
# 全局路径
prefix=${NODE_HOME_GLOBAL}\node_global
# 缓存路径
cache=${NODE_HOME_GLOBAL}\node_cache
# npm 仓库地址
home=https://registry.npmmirror.com
# cnpm 仓库地址: 淘宝镜像; 全局安装命令: npm install -g cnpm --registry=https://registry.npmmirror.com
registry=https://registry.npmmirror.com/
disturl=https://registry.npmmirror.com/dist
# pnpm 配置; 全局安装命令: npm i pnpm -g
# pnpm全局bin路径
global-bin-dir=${NODE_HOME_GLOBAL}\node_global
# pnpm全局安装路径
global-dir=${NODE_HOME_GLOBAL}\node_global\node_modules\pnpm\pnpm-global
# # pnpm全局仓库路径(类似 .git 仓库)
store-dir=${NODE_HOME_GLOBAL}\node_global\node_modules\pnpm\pnpm-store
# pnpm创建pnpm-state.json文件的目录
state-dir=${NODE_HOME_GLOBAL}\node_global\node_modules\pnpm\pnpm-state
# pnpm全局缓存路径
cache-dir=${NODE_HOME_GLOBAL}\node_global\node_modules\pnpm\pnpm-cache

在这里插入图片描述

3.文件夹结构

以下两个文件夹是需要自己创建的

  • D:\Program Files\NodeJs\V14.20.0\node_global
  • D:\Program Files\NodeJs\V14.20.0\node_cache
// 安装路径
C
 - Program Files
   - NodeJs
     // 14版本 NodeJs 安装路径
     // 对应系统环境变量 %NODE_HOME%, 变量Path内注册 %NODE_HOME%,
     // 暴漏该路径下 node.exe, npm.cmd 等可执行命令(比如 node -v, npm -v 等命令).
     - V14.20.0
       // 里面除了安装该版本 NodeJs 时自带的 npm 包等外,不会再写入文件
       - node_modules
       - node.exe
       - npm.cmd
     // 16版本 NodeJs 安装路径
     - V16.18.0
       - ...... 省略,同上结构


// 截止到 node_global、node_cache 这两个节点,都是自己创建的,
// 这两个节点内部的文件是自生成的
D
 - Program Files
   - NodeJs
     - V14.20.0
       // 全局安装路径, 对应系统环境变量 %NODE_HOME_GLOBAL%,
       // 变量Path内注册 %NODE_HOME_GLOBAL%, 暴漏该路径下 cnpm.cmd,
       // pnpm.cmd 等可执行命令 (比如 cnpm -v, pnpm -v 等命令).
       - node-global
         // 该目录保存所有通过 -g 参数安装的依赖包
         - node_modules
           // 执行 npm install -g cnpm 生成该文件夹
           - cnpm
           // 执行 npm install -g pnpm 生成该文件夹
           - pnpm
             // 以下4个文件夹是在 .npmrc 内配置指定的(可以不创建,需要时自动创建)
             - pnpm-cache
             - pnpm-global
             - pnpm-state
             - pnpm-store
         - cnpm.cmd
         - pnpm.cmd
         - pnpx.cmd
       - node_cache
     - V16.18.0
       - ...... 结构同上,省略
	

.4 cmd 脚本

// 该命令用于更新系统环境变量,KEY 是变量名,VALUE是变量值
call setx /m KEY "VALUE"

对应 NodeJs 版本改成自己的

脚本:NODE_V14.20.0.cmd

@echo off
echo Running ......
call setx /m NODE_HOME "C:\Program Files\NodeJs\V14.20.0"
echo NODE_HOME_VERSION: ======= V14.20.0 =======
echo Running ......
call setx /m NODE_HOME_GLOBAL "D:\Program Files\NodeJs\V14.20.0"
echo NODE_HOME_GLOBAL_VERSION: ======= V14.20.0 =======
pause

exit

脚本:NODE_V16.18.0.cmd

@echo off
echo Running ......
call setx /m NODE_HOME "C:\Program Files\NodeJs\V16.18.0"
echo NODE_HOME_VERSION: ======= V16.18.0 =======
echo Running ......
call setx /m NODE_HOME_GLOBAL "D:\Program Files\NodeJs\V16.18.0"
echo NODE_HOME_GLOBAL_VERSION: ======= V16.18.0 =======
pause

exit

想用哪个版本就运行哪个,需要以管理员身份运行。

在这里插入图片描述

效果

步骤
1,执行脚本
2,新开窗口查询信息
执行完脚本后重开一个cmd窗口去查询,不然不准确。
在这里插入图片描述

在这里插入图片描述

结束

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值