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. SpringBoot中的application.properties外部注入覆盖

    由想要忽略properties中的某些属性,引发的对SpringBoot中的application.properties外部注入覆盖,以及properties文件使用的思考. SpringBoot 配 ...

  2. VS Code 1.60 发布!竟然可以自动检测编程语言了!

    北京时间 2021 年 9 月 3 日凌晨,微软正式发布 2021 年 8 月版的 Visual Studio Code.希望您会喜欢此版本中的许多更新与改进,以下是其中的一些亮点: * 自动语言检测 ...

  3. Jenkins 构建JOB失败

    问题描述 同事在使用Jenkins打包项目的时候报错 error:index-pack died of signal 15 fatal: index-pack failed 出现这个问题,初步怀疑是拉 ...

  4. centos7安装privoxy

    本文分为三部分,第一部分是在阿里云的ECS上安装Privoxy,第二部分是在AWS的EC2上安装Privoxy,第三部分是Privoxy的配置. 第一部分:阿里云ECS安装Privoxy 配置yum源 ...

  5. Python - pip-review 库

    使用 pip-review 库(推荐) 安装库 pip install pip-review 检查是否有需要更新的包 > pip-review scikit-learn==0.23.2 is a ...

  6. Linux - 安装 ant

    官方下载地址 https://ant.apache.org/bindownload.cgi 旧版下载地址 https://archive.apache.org/dist/ant/binaries/ 挑 ...

  7. 《Go语言圣经》阅读笔记:第二章程序结构

    第二章 程序结构 2.1 命名 在GO语言中,所有的变量名.函数.常量.类型.语句标号.包名都遵循一个原则: 名字必须以字母或者下划线开头,后面紧跟任意数量的字母数字下划线.区分大小写. 在GO语言中 ...

  8. 第05课:GDB 常用命令详解(上)

    本课的核心内容如下: run 命令 continue 命令 break 命令 backtrace 与 frame 命令 info break.enable.disable 和 delete 命令 li ...

  9. ABP 极简入门教程(三 权限)

    此处演示为MVC项目,同样权限定义需要到Application中才能在获取API时进行权限验证 一.打开Sample.Core\Authorization\PermissionNames.cs增加授权 ...

  10. C# AutoMaper简单使用

    AutoMapper它是一种对象与对象之间的映射器,让AutoMapper有意思的就是在于它提供了一些将类型A映射到类型B这种无聊的实例,只要B遵循AutoMapper已经建立的惯例,那么大多数情况下 ...