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

60 天前
 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. 连接成功后,如果没有选择项目目录,则可以自行选择
4956 次点击
所在节点    Node.js
62 条回复
darksword21
60 天前
nix
emacs tramp
faimin
60 天前
volta +1
Leonkennedy2
60 天前
我一直用虚拟机...
Belmode
60 天前
手动临时变更环境变量
otakustay
60 天前
有.nvmrc 不就会自动切版本了吗
jenson47
60 天前
@foam
@lingyired @otakustay 确实是我对 nvm 研究没那么深入,之前在 window 上出现切换需要权限问题,后面就放弃多版本切换,恰好当时还比较喜欢完 docker 就想着直接丢到 docker 上,如此以来需要什么依赖跟宿主机就没关系了,在一定程度上保证宿主机的干净
IAmAnonymous
60 天前
node 小白问个问题,我引入一个库 npm install 之后
162 vulnerabilities (1 low, 92 moderate, 66 high, 3 critical)

然后 npm audit fix --force
IAmAnonymous
60 天前
node 小白问个问题,我引入一个库 npm install 之后
162 vulnerabilities (1 low, 92 moderate, 66 high, 3 critical)

然后 npm audit fix --force

变成
8 vulnerabilities (2 moderate, 6 high)

应该怎么解决
zbowen66
60 天前
@angrylid #5 不是有个命令叫 reload window 吗,可以试试
n18255447846
60 天前
用 prebuilt binaries 不就行了,把 node 命令换成绝对路径,想要哪个用哪个,
n18255447846
60 天前
@IAmAnonymous npm 常规操作,能跑没什么好解决的,无非就是一些包过时了或有一些安全问题被扫到了。

非要解决就升级风险包到 latest ,不过升级是一件费力不讨好的事。另外如果最新的包还有安全问题,就换个。
IAmAnonymous
60 天前
@n18255447846 其实只要能跑,不用管这个 vulnerabilities 是 low ,mediate, high, critical 是吗?谢谢
mabelrussell
60 天前
asdf
14
60 天前
我是用 nvm ,在不同项目放不同的 .nvmrc 文件,.nvmrc 文件声明版本号,cd 到任意目录 nvm use 就能跑。
然后在 packages.json 声明 engines 指定版本,这样忘记 nvm use 执行 npm 相关命令会报错。
PrtScScrLk
60 天前
@14 感觉是个不错的方式,从 14 到现在的 20 ,版本问题其实挺头疼的,现在启动项目都要问一嘴用什么版本。显式的配置文件去声明版本是一个很好的方式呀哈哈哈
FightPig
60 天前
一直用的 nvm ,以前觉得挺卡的,后来换成 fish 后觉得还行
yagamil
60 天前
目前的我的开发都尽量避免在本地环境开发,毕竟没有几个公司能给你 64GB 的内存。

远程开发我感觉还更加不爽。。。本地台式机器 64GB ,很容易呀。
bxh8640123
60 天前
nvm + nvmrc + zsh vvm auto use
Cbdy
60 天前
直接把 node 安装到项目目录不就可以了吗?几行 shell 脚本的事儿
可以参考 gradle 的 toolchains
Heymans
60 天前
可以使用 vscode 的 dev container, 结合 docker 使用

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

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

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

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

© 2021 V2EX