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

2024-07-20 12:33:48 +08:00
 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. 连接成功后,如果没有选择项目目录,则可以自行选择
7955 次点击
所在节点    Node.js
62 条回复
BG7ZAG
2024-07-20 12:36:59 +08:00
命令行用 fnm
win 界面用[nvm-desktop]( https://github.com/1111mp/nvm-desktop)
amlee
2024-07-20 12:42:02 +08:00
docker 不是有 devcontainer 么
jiuzhougege
2024-07-20 12:51:09 +08:00
nvm 香,就是不同项目需要的 pnpm 需要显式指定
qiqw
2024-07-20 13:01:07 +08:00
volta
angrylid
2024-07-20 13:03:35 +08:00
我用的 fnm ,不过这东西有个问题,就是有时候已经切到了新的 LTS ,但是 VSCode 的 Debugger 依然认为 path 里面的版本是 10 ,版本过旧无法 auto attach ,必须 Command + Q 强行重启
foam
2024-07-20 13:05:31 +08:00
开发阶段 nvm 完全没烦恼,不同项目放置一个自己的 nvmrc 文件,打开的时候 nvm use 。然后都能保持不同的 node 版本互不干扰。比 docker 好用多了。
lingyired
2024-07-20 13:10:26 +08:00
用的 nvs ,nvs 的 node 版本环境只在当前 cmd 窗口有效。也就是可以多个 cmd 同时使用多个 node 不同的版本。

然后使用 Quicker 绑定了很多命令,每次打开 cmder ,就使用 Quicker 的单个快捷键输入多个命令,分别是:

cd /path/to/project

nvs use node/x.y.z/x64

这样就进入刚项目的同时切换到对应的 node 版本了,这个 node 版本只在当前 cmd 窗口有效。
wyl986
2024-07-20 13:24:13 +08:00
用 vagrant 上虚拟机 homestead ,在 ubuntu 里面装 nvm ,nvm 会把 node/npm/yarn/pnpm/pm2 这些装到 /root/.nvm/${version}/node/bin 下面,启动项目的时候指定一下用的哪个 npm/yarn/pnpm 就可以了(你可以在 package.json 里面指明),这样可以实现同时运行多个版本的 node

虽然是虚拟机,但是是命令行的,性能完全够的,一点也不卡
smilingsun
2024-07-20 13:26:59 +08:00
Devbox 或者 nix shell ?
blurethdao
2024-07-20 13:38:50 +08:00
一般不会有太多 node 版本装两个 wsl 就够用了
aofall
2024-07-20 13:38:54 +08:00
我用的 Jetbrains WebStorm 开发的,可以在工程配置中自由选择 Node 解释器版本,平时一般用不上 nvm 来切换版本
sunshower
2024-07-20 13:51:06 +08:00
volta+1
asdjgfr
2024-07-20 13:54:01 +08:00
volta ,目前在 windows 上和 linux 上都没遇到什么问题
jenson47
2024-07-20 13:55:47 +08:00
@amlee Remote Development 套件确实有,不过有时候我就懒得重复配置,我希望在一个地方配置,其他地方就不关心。所以我专注放到 .env.development 配置
yangg
2024-07-20 15:30:45 +08:00
本地开发 volta ,最能避免 lz 的手动切换问题
body007
2024-07-20 15:37:16 +08:00
我用 vfox
mashpolo
2024-07-20 15:43:29 +08:00
用的 mise 来管理 node ,python ,go 等多版本的问题
nzbin
2024-07-20 15:48:32 +08:00
nvm ,本地开发,8G 内存,来回切换确实麻烦点,但是也能接受
dcsuibian
2024-07-20 15:56:51 +08:00
fnm ,也就是 Fast Node Manager 。这个很好用,可以在项目文件夹下面放一个.node-version 文件,这样 cd 进去时就自动切换到对应的版本了。
waiaan
2024-07-20 16:55:50 +08:00
volta+1

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

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

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

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

© 2021 V2EX