关于前端 node 多版本你是如何解决的,还有您是本地开发还是远程开发

61 天前
 jenson47

随着不同年代的项目,由于依赖的限制,有些支持的 node 版本比较低,有些又需要比较高。

目前网上大家的解决方案:

  1. window nvm 多版本管理
  2. n

如果我想要同时开多个项目的话,就比较麻烦,而且每次都得来回切换。 目前的我的开发都尽量避免在本地环境开发,毕竟没有几个公司能给你 64GB 的内存

Docker 解决 Node 多版本问题

优点:

  1. 再也不需要手动去切
  2. 将需求通过 Dockerfile 写好,后续只需要构建,构建的命令写成 shell ,比如我通过 Makefile
  3. 通过目录挂载解决模块缓存问题
  4. 由于在口罩期间,刚好可以结合远程开发

缺点:

  1. 运行时得调用 docker 命令
  2. 还得配置一堆变量挂载,映射端口
  3. 尤其是后面的有些项目都不去认这个 PORT 环境变量了,得自行修改调整

经过我这两年的项目实践,我将docker node 多版本操作进行了整理

  1. 将操作 docker 的命令这些封装成 shell
  2. 环境变量 刚好放到 .env.development中,比如后端 ip 域名,暴露端口等
  3. 运行,直接运行 shell 脚本,当然为了让脚本更简洁,我将常用的命令封装成 Makefile

具体实例请查看:https://github.com/miss55/docker-node/blob/main/README-zh.md#%E4%BE%8B%E5%AD%90

配合 vscode 的 Remote 扩展 进行远程开发

搜索 vscode 扩展,关键字: Remote Development ,看着自己的需求添加相应的扩展即可

具体教程可以参考vscode 官网的教程

简单教程:

  1. 新开一个 vscode [ ctrl + shift + n ]
  2. 连接到服务器 [ ctrl + shift + p ] + [ connect to host ]
  3. 如果还没配置,则选择 Add New SSH Hosts 去添加即可
  4. 连接成功后,如果没有选择项目目录,则可以自行选择
4967 次点击
所在节点    Node.js
62 条回复
amlee
61 天前
@14 为了方便,还以在 scripts 中加一个 predev 或 prestart 执行 nvm use
Retas
61 天前
nvm + 项目根目录 .nvmrc 声明版本 + shell 脚本检查当前目录 .nvmrc 文件自动切换 node 版本,个人体感最佳。接手新项目先问清 node 版本,狠狠地塞一个 .nvmrc 文件后面就全自动切换了
supuwoerc
61 天前
volta
yoshiyuki
60 天前
用 nvm 装到系统路径里,不同项目内使用 webstorm 的 run config 来选定对应版本,要运行命令的时候就从图形化界面点一下 run
ysc3839
60 天前
我选择用 fnm ,包括 Windows 也用
paradox8599
60 天前
目前用的 vfox ,有多平台和多语言支持,不止 nodejs
n18255447846
60 天前
@IAmAnonymous 是的。node 包只要装成功了没输出 ERR 报错就能跑,npm 其实有个选项可以关闭 audit
IAmAnonymous
60 天前
@n18255447846 哦哦,谢谢
mgcnrx11
60 天前
在使用 nvm 管理 nodejs 的版本之后,会发现 包管理器 的版本用 corepack 来做管理就会出现问题。在用 nvm 之后,npm 的版本会跟随 nodejs 版本切换而切换,但是 corepack 安装的 pnpm 缺无法自动切换了。

导致的结果是可能会用上了不兼容的 nodejs 和 pnpm 版本。不知道有什么好的实践方式?

能想到的是通过环境变量 COREPACK_HOME 来隔离不同的 corepack 安装路径
ByteCat
60 天前
以前用 nvm ,现在换 fnm 了,很好用。包管理器用 corepack 来管理
zb1141920796
60 天前
@ByteCat corepack 是只要安装一个版本的吗?例如 pnpm ,我 node 切换不同的版本,Pnpm 的支持版本也是会变的吧,我现在 nvm 说是每切换一个 node 版本,pnpm 这些都是需要重新安装的
ByteCat
60 天前
@zb1141920796 我现在的用法是安装一个系统级 nodejs-lts ,这个可以通过包管理器比如 Windows 上的 scoop 来管理更新,然后用这个 node-lts 的 corepack 来使用 pnpm 或者 yarn 之类的,然后用 fnm 管理不同版本的 node 版本。
thevita
60 天前
asdf
GuguDan
59 天前
pnpm env use x.x.x -g
miniaoes
59 天前
volta ,node 版本锁死在 package.json 里会自动切换
hi2hi
59 天前
我目前是纯 node 在虚拟机里面写;小程序这种需要本地 UI 的,本地写; windows 下还是 nvm 切换。尽可能保证统一的 node 版本。
LunaSeki
59 天前
用 vlota 显式 pin 一下对于多项目不同版本的场景比较方便
ydfk
59 天前
volta+1
多项目管理非常方便
remember5
59 天前
nvm 转到 vfox 了
shintendo
59 天前
volta 暴打所有手动切版本和 CD 切版本

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1058772

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX