大家在开发过程中是如何管理多个项目不同的 NodeJS 版本的?

2023-10-25 13:47:33 +08:00
 fancy2020

本地会开发多个不同的 NodeJS 项目,每个项目可能需要的 Node 版本不同,有的老项目还在用 10.xx ,有的要求 12.xx/14.xx/16.xx/18.xx 。

总之,每个项目都需要不同的 Node 版本。很多时候我都是在启动项目遇到报错了才会意识到要切换 Node 版本。

8750 次点击
所在节点    Node.js
94 条回复
jwz426
2023-10-26 09:05:29 +08:00
如果用 vscode 开发的,可以尝试下 devcontainer 。
3825995121
2023-10-26 09:14:44 +08:00
当然是 volta 了 rust 写的
一个项目对应一个 node 版本
nvm 我用的时候老是出问题 安装的时候 还要删除版本什么的 早都放弃了
zhyl
2023-10-26 09:26:22 +08:00
fnm env --use-on-cd | source # 根据目录下的配置自动切换 node 版本
fnm current > .nvmrc
zackzergzeng
2023-10-26 09:35:21 +08:00
git checkout 后直接做一步 nvm 切换版本吧,husky 有 post-checkout 的钩子可以用
courtier
2023-10-26 09:40:12 +08:00
如果是需要同时开发跑着好几个不同版本 node 的项目,这种情况的话有没什么办法支持
例如我同时要跑只支持 node14 16 18 版本的项目
tool2d
2023-10-26 09:55:44 +08:00
我都是用环境变量隔离的,使用前用脚本拉一下对应的环境变量,没觉得有啥不方便。
mdn
2023-10-26 10:00:46 +08:00
fnm

.node-version 或 .nvmrc 文件确定项目版本
gxm44
2023-10-26 10:10:09 +08:00
本地 nvm 开发,然后打成 image
dc2002007
2023-10-26 10:18:48 +08:00
有 nvm 又不愿意手动切换,你这个要求是有点高了,要求高,那你就要付出劳动,搞多个版本在 docker 里跑,在本地用 shell 脚本调用不同版本的 npm 路径来执行,gradle 也可以搞,cicd 的 jenkins 发布也是这个道理,前提是你要付出更复杂的劳动,但是如果你只是为了在单机开发调试用,整个团队都这么干,要累死人,所以还有一种方式就是云开发,大家都在云上的 ide 上开发,每个项目选择不同的 ide 去玩,但这些方案都需要付出更多的劳动
ajan
2023-10-26 10:18:51 +08:00
就没人用软链接吗?

Windows 、Linxu 、macOS 都可以,下载 nodejs 按目录(版本号)存放,

在 环境变量 或 .bash_profile 中 添加 /dev/nodejs/node.js

再写个脚本命令来切换;
------------------------------------------------------------------

/dev/nodejs/node.js -> /dev/nodejs/v8.9.4-win-x64
......
/dev/nodejs/v18.12.1-win-x64
superchijinpeng
2023-10-26 10:20:03 +08:00
volta
dabai0806
2023-10-26 10:21:25 +08:00
fnm +1
mayerer
2023-10-26 10:31:20 +08:00
建议你换个提问方式:先把你百度/谷歌/必应到的,或者其他社区其他渠道获取到的解决方案放到主贴内,抛砖引玉式的寻求更优解,大家也可以根据你的当前认知来提供更细致和全面的回答
MrYELiex
2023-10-26 10:37:11 +08:00
fnm
.node-version 写项目需要的版本
DingJZ
2023-10-26 10:38:18 +08:00
咬咬牙升一波,统一一下。之前用 nvm ,jenkins 上的 nvm 插件总出问题,影响构建效率和心情,后来分析了一波统一升了一次,就不用纠结这事了
eggroll
2023-10-26 11:01:11 +08:00
asdf ,每个项目加配置定版本不用手动切换
Xenotaros
2023-10-26 11:08:07 +08:00
nvm
或者 webstorm 运行配置指定 node 版本
Masoud2023
2023-10-26 13:35:32 +08:00
你如果非要听点不一样的答案,那就 docker 吧
shuimugan
2023-10-26 15:43:35 +08:00
如果不肯把全部项目升级到统一版本,我一般就是去 https://nodejs.org/en/download 把各个版本的 zip 包下载解压到不同路径,敲命令时使用绝对路径的 node/npm
tomyail
2023-10-26 15:49:02 +08:00
```bash
asdf local nodejs latest:18
git add .tool-versions
```

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

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

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

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

© 2021 V2EX