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. MongoDB - 文档之间的关系 + _sort和投影

    1. 文档对象之间的关系 一对一 (one TO one) - 例如: 夫妻 (一个丈夫 对应 一个妻子) - 在MongoDB中, 可以通过内嵌文档的形式来体现出一对一的关系 演示: 首先在 my_ ...

  2. for循环操作(for...in、forEach)

    1.for...in语句用于对数组或者对象的属性进行循环操作,是for循环的一种. 注意:该方法可用于数组或对象. 语法:  for(变量 in 对象/数组){} 如: var obj = { nam ...

  3. TFRecord读写简介+Demo 基于Ubuntu18.04+Tensorflow1.12 无WARNING

    简介 TFRecord是TensorFlow官方推荐使用的数据格式化存储工具. 它规范了数据的读写方式. 只要生成一次TFRecord,之后的数据读取和加工处理的效率都会得到提高. 将图片转换成TFR ...

  4. 已知三角形ABC为锐角三角形,求 sinA + sinB·sin(C/2) 的最大值。

    已知三角形ABC为锐角三角形,求 sinA + sinBsin(C/2) 的最大值. 解:Δ := sinA + sinB·sin(C/2) = sin(B+C) + sinB·sin(C/2) = ...

  5. 证明:(a,[b,c]) = [(a,b),(a,c)]

    这题是潘承洞.潘承彪所著<初等数论>(第三版)第一章第5节里一个例题,书中采用算术基本定理证明,并指出要直接用第4节的方法来证是较困难的. 现采用第4节的方法(即最大公约数理论里的几个常用 ...

  6. shell脚本 批量添加删除用户

    2021-07-26 1.批量添加用户 # 编写脚本 vi add_student_50.sh # 添加用户组 student groupadd student # 添加用户 student1-stu ...

  7. ucosii操作系统内核源码学习第一篇

    根据书本理论介绍以及实际看内核源代码得出: 1. 操作系统默认定义了64个TCB块(为全局变量,编译时候以及分配了,创建一个任务就使用一个,删除一个任务就归还一个)(为什么最大只支持64个任务呢,我们 ...

  8. 面试官:如何实现LRU?你学会了吗?

    面试官:来了,老弟,LRU缓存实现一下? 我:直接LinkedHashMap就好了. 面试官:不要用现有的实现,自己实现一个. 我:..... 面试官:回去等消息吧.... 大家好,我是程序员学长,今 ...

  9. openresty lua-resty-string md5 sha aes random string

    安装 https://github.com/openresty/lua-resty-string $ sudo opm get openresty/lua-resty-string $ ls -al ...

  10. Mybatis(四)——

    test https://www.cnblogs.com/chiaki/p/14529418.html