高级前端
js
【Q272】如何查看你们 JS 项目中应采用的 node 版本

如何查看你们 JS 项目中应采用的 node 版本

更多描述 当入职新公司,接手一个新的项目时,如何知道这个项目需要的 node 版本是多少

Issue 欢迎在 Gtihub Issue 中回答此问题: Issue 274 (opens in a new tab)

Author 回答者: rex-ll (opens in a new tab)

如果项目使用的yarn和typescript,可以查看yarn.lock里的@types/node@* 的version

Author 回答者: shfshanyue (opens in a new tab)

  1. packageJson.engines,第三方模块都会有,自己的项目中有可能有
  2. pm2.app[].interpreter,如果采用 pm2 部署,可以查看 interpreter 选项,但不保证该项存在
  3. FROM,如果采用 docker 部署,查看基础镜像 Dockerfile 中 node 的版本号
  4. 如果以上方式都不可以,那只有问人了

Author 回答者: shfshanyue (opens in a new tab)

@DoubleRayWang 我试了一下,这种方法应该是不靠谱的

Author 回答者: mrcaidev (opens in a new tab)

process.env 里也可以看到 node 版本号,比如 NODE, _ 这两个字段的值。

个人是用的 NVM,没有在原生的 node 上试过,但后者的 process.env 应该也有。

Author 回答者: pengzhanbo (opens in a new tab)

我不确定是指 一个完全新的从零开始的项目,还是指已有的项目相对于新人来说的刚接手的“新”。

  1. 如果是一个完全新的从零开始的项目,一般来说,如果均是采用最新稳定版本的依赖包,那么可以采用的node版本,其范围可以确定在 ^14.18.0 || >=16 不超过node的当前最新稳定版本;而如果由于项目的特殊性,采用了低版本的依赖包,那么需要查看这些包的 package.jsonengines.node 以确定这些包支持的node版本,取交集后确定最终采用的node版本。

  2. 如果是一个已有的项目,首先查看的是 项目的 package.json 中的 engines.node 字段,如果有声明,那么就采用对应的版本,如果没有,那么直接询问该项目的原负责人,确认是否有 node 版本的要求以及应该使用哪个版本,负责人不确定就询问原先用于开发或构建这个项目的机器安装的 node 版本,这样可以保证切换到新人的开发机器上,也有一致的node环境。