nodejs的多版本配置对于我来说一直都是一个较为头疼的事情。本人的开发工作会涉及electron以及前端,对于工作中使用的npm包(点名node-sqlite3和node-sass)在某些情况下,会使用node-gyp进行原生C/C++模块的编译,此时,nodejs的版本就尤为重要,但是本人又不太愿意使用nvm进行管理,所以总结了一套nodejs多版本管理的指南。

非安装二进制包下载

为了实现基本的多版本,nodejs二进制包我们都下载非安装版本,而不是安装版:

下载地址:Download | Node.js (nodejs.org)

  • node-v12.22.5-win-x64.zip
  • node-v14.17.5-win-x64.zip

本地目录配置

下载好后,我们选取一个我们经常安装软件的目录,譬如在本人的机器上,我使用D:\Programes\来存放我所有的软件。在软件存放目录下创建名为nodejs的文件夹,并且将上述的两个版本的nodejs都按照其版本名称解压:

D:\Programs\nodejs
|-- node-v12.22.5-win-x64
|-- node.exe
|-- ...
|-- node-v14.17.5-win-x64
|-- node.exe
|-- ...

接下来,我们在nodejs文件夹中创建一个文件夹:global_and_cache_files,并在其中创建子目录:

  • global_modules:存放node的全局包
  • cache_modules:存放npm使用过程的缓存文件

至此,我们有如下的目录结构

D:\Programs\nodejs
|-- node-v12.22.5-win-x64
|-- ...
|-- node-v14.17.5-win-x64
|-- ..
|-- global_and_cache_files
|-- global_modules
|-- cache_modules

npmrc

接下来是老生常谈的npmrc配置(用户目录/.npmrc文件):

# 国内阿里镜像
registry=https://r.npm.taobao.org/
# 设置全局包的存放路径(注意此处的路径和上面创建的路径一致)
prefix=D:\Programs\nodejs\global_and_cache_files\global_modules
# 缓存路径(和上面创建的路径一致)
cache=D:\Programs\nodejs\global_and_cache_files\cache_modules

环境变量设置

对于环境变量,最基本的就是将node.exe添加到环境变量中:

这里我分了两步:

  1. 设置NODE_JS_HOME环境变量为上面的某一版本nodejs的路径:D:\Programs\nodejs\node-v14.17.5-win-x64

  1. NODE_JS_HOME环境变量加到Path中。此外,为了之后能够在命令行中使用全局安装的npm包,我们也把对应的全局包安装路径设置到环境变量中:D:\Programs\nodejs\node_global_modules

切换环境

在上述的配置下,环境的切换也比较方便。只需要修改对应的NODE_JS_HOME指向的不同版本nodejs的安装路径即可。

环境切换注意点

由于缓存和全局安装的npm包会和安装时候的nodejs版本关联,在切换环境后请对全局包进行重新的安装工作。

其他的管理方案

实际上,nodejs多版本管理方案还有,只不过这些都需要安装额外的东西,个人不是很喜欢。

NVM-Windows

nodist

程序员微机课系列—我的nodejs多版本管理方法的更多相关文章

  1. 程序员的智囊库系列之2----网站框架(framework)

    程序员的智囊库系列之2--网站框架(framework) 这是程序员的智囊库系列的第二篇文章.上一篇文章讲了服务器与运维相关的工具,这篇文章我们将介绍几个搭建网站的框架: django express ...

  2. Web程序员开发App系列 - 开发我的第一个App,源码下载

    Web程序员开发App系列 Web程序员开发App系列 - 认识HBuilder Web程序员开发App系列 - 申请苹果开发者账号 Web程序员开发App系列 - 调试Android和iOS手机代码 ...

  3. Web程序员开发App系列 - 调试Android和IOS手机代码(补图)

    Web程序员开发App系列 Web程序员开发App系列 - 认识HBuilder Web程序员开发App系列 - 申请苹果开发者账号 Web程序员开发App系列 - 调试Android和iOS手机代码 ...

  4. Web程序员开发App系列 - 申请苹果开发者账号

    Web程序员开发App系列 Web程序员开发App系列 - 认识HBuilder Web程序员开发App系列 - 申请苹果开发者账号 Web程序员开发App系列 - 调试Android和iOS手机代码 ...

  5. Web程序员开发App系列 - 认识HBuilder

    Web程序员开发App系列 Web程序员开发App系列 - 认识HBuilder Web程序员开发App系列 - 申请苹果开发者账号 Web程序员开发App系列 - 调试Android和iOS手机代码 ...

  6. 程序员的智囊库系列之3--分布式文件系统(Distributed file systems)

    程序员的智囊库系列之3--分布式文件系统(Distributed file systems) 这是程序员的智囊库系列的第三篇文章.上一篇文章本来打算介绍几个搭建网站的框架,但由于这部分的内容较多,还需 ...

  7. 程序员的经济学系列——你不可不知的生存智慧——第一篇:小X是要成为IT精英的男人!

    21世纪,不懂经济学就是耍流氓!如何才能生活得更好?作为程序员你一定也思考过这个问题.今天我们就来从经济学中寻找这问题的答案吧! 一·PPF与机会成本 1.PPF综述 首先为大家介绍第一个最简单的经济 ...

  8. 程序员的脑袋系列---利用ffmpeg命令提取音频

    今日各大播放器的版权控制越来越严格.导致很多歌曲无法听,但是MV却可以听.这样很蛋疼有木有? 然而,我们可以利用ffmpeg工具提取MV的音频,比如做成MP3格式,这样就可以听了.--哈哈(邪恶地笑) ...

  9. 黑马程序员——JAVA基础之抽象和接口 , 模版方法设计模式

    ------- android培训.java培训.期待与您交流! ---------- 抽象定义:           抽象就是从多个事物中将共性的,本质的内容抽取出来.           例如:狼 ...

随机推荐

  1. 痞子衡嵌入式:MCUXpresso IDE下SDK工程在Build配置上与IAR,MDK差异

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是MCUXpresso IDE下SDK工程在Build配置上与IAR,MDK差异. 恩智浦 SW 团队每个季度都会公布 SDK.Tool ...

  2. Spring Boot 入门系列(二十三)整合Mybatis,实现多数据源配置!

    d之前介绍了Spring Boot 整合mybatis 使用注解方式配置的方式实现增删改查以及一些复杂自定义的sql 语句 .想必大家对spring boot 项目中,如何使用mybatis 有了一定 ...

  3. proto buffer

    protobuf是一种高效的数据格式,平台无关.语言无关.可扩展,可用于 RPC 系统和持续数据存储系统. protobuf介绍 Protobuf是Protocol Buffer的简称,它是Googl ...

  4. vue 导出excel后端返回乱码下载不了的解析问题

    有俩种方法可以用 第一种方法: 解析:直接解析并且下载后端的乱码  this.download('后端给的导出excel的方法', {        ...this.queryParams  }, ` ...

  5. Linux下ansible使用

    一.ansible的功能和意义 1.功能 ansible批量功能 ----------------------> 并行 01. 可以实现批量系统操作配置 02. 可以实现批量软件服务部署 03. ...

  6. shell脚本书写

    #!/bin/bash #指定脚本默认使用的命令解释器 第1行 幻数 #!/usr/bin/python #!/bin/awk #!/bin/sed

  7. Jsoup快速查询

    一.selector选择器 二.Xpath查询

  8. [第三篇]——CentOS Docker 安装之Spring Cloud直播商城 b2b2c电子商务技术总结

    CentOS Docker 安装 Docker 支持以下的 64 位 CentOS 版本: CentOS 7 CentOS 8 更高版本... 使用官方安装脚本自动安装 安装命令如下: curl -f ...

  9. Java Web下MySQL数据库的增删改查(二)

    前文:https://www.cnblogs.com/Arisf/p/14095002.html 在之前图书管理系统上做了改进优化 图书管理系统v2 首先是项目结构: 1.数据库的连接: 1 pack ...

  10. ACID的实现原理

    引言 ACID是事务的特点也是必须的要求,只有保证ACID事务的执行才不会出错,分别是原子性.一致性.隔离性和持久性.我们知道典型的MySQL事务是这样执行的: start transaction 开 ...