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

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

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

cd /path/to/project

nvs use node/x.y.z/x64

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

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

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

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

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

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

© 2021 V2EX