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

197 天前
 fancy2020

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

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

6300 次点击
所在节点    Node.js
94 条回复
tog
197 天前
nvm 了解下,百度不会吗 兄弟
Ally
197 天前
fnm
ljtfdt
197 天前
nvm ?
jackytang520
197 天前
我用 asdf
lisongeee
197 天前
volta
hsuyeung
197 天前
nvm
sleepm
197 天前
devenv
sparkinglemon
197 天前
fnm
stinkytofu
197 天前
nvm 肯定是要用的, 还可以配合 conda 定制各种不同的环境, 不同项目必须要隔离开来, 否则真的是头大
s1mpleOf
197 天前
volta
Comyn
197 天前
nvm
fancy2020
197 天前
抱歉,我描述的不是很清楚。

nvm, n 这些版本管理工具我是在用的。

我的问题是:
1. 这些工具都需要你去手动切换 Node 版本,而不能做到启动一个不同的项目可以自动选择指定版本的 Node 来运行(或者是我不知道?)。

2. 当你使用一个不兼容的 Node 版本运行项目的时候,只要等到代码报错,才会意识到 Node 版本有问题。
我知道 package.json 里有个`engines`字段可以指定 Node 版本,但很多项目是没有指定的 https://docs.npmjs.com/cli/v10/configuring-npm/package-json#engines


之前公司是把 Node 和 NPM 的执行文件直接打包到项目中提交到 git 的,这样可以保证每个人都适用正确的版本来运行项目。
nodejsexpress
197 天前
把版本切换命令写到 package.json script 里面
lisongeee
197 天前
@fancy2020 #12

> 而不能做到启动一个不同的项目可以自动选择指定版本的

https://volta.sh/
fancy2020
196 天前
@lisongeee

感谢!

看起来 Volta 确实就是我想要的工具,我研究一下

Fast: Install and run any JS tool quickly and seamlessly! Volta is built in Rust and ships as a snappy static binary.

Reliable: Ensure everyone in your project has the same tools—without interfering with their workflow.

Universal: No matter the package manager, Node runtime, or OS, one command is all you need: volta install.
liuzhaowei55
196 天前
根目录添加 .nvmrc 内容为 lts/hydrogen
nvm 可以自动切换版本
HuskyYellow
196 天前
guorenjie
196 天前


在每个项目根目录下加一个.nvmrc 文件,指定 node 版本,打开终端自动切换
mMartin
196 天前
我觉得可以用 conda 管理环境
wjx0912
196 天前
windows:nvm ( volta 不支持 32bit )
mac:volta

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

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

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

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

© 2021 V2EX