npm 如何查找项目支持得节点版本

k3bvogb1  于 2022-11-14  发布在  其他
关注(0)|答案(6)|浏览(274)

除了反复试验之外,是否有其他方法可以检测我应该在存储库上使用什么节点版本?
随着web框架的快速崛起,回到6个月、12个月或24个月前的项目已经成为一种普遍的需求。在过去的几周里,我已经做了很多这样的事情,我的检测正确节点版本的过程已经变成了:

git clone [REPO]
npm i
[build]
### if error
rm -r node_modules
nvm use 4, 5 or 6
npm i
[build]

我不禁觉得我在这里缺少了一些非常基本的东西。感谢你能与我分享的任何智慧!

ruyhziif

ruyhziif1#

正如其他答案中提到的,一些软件包在package.json中有一个engines字段。如果用户试图在不受软件包支持的Node.js版本上安装软件包,npm会警告用户。engines字段如下所示:

{
  "engines": {
    "node": ">=4.0.0"
  }
}

更多信息:https://docs.npmjs.com/files/package.json#engines
此外,许多软件包都有一个配置项(如TravisCI),用于自动测试软件包。这些配置项配置文件通常包含要测试的Node.js版本列表。通常,配置项配置中的最低版本号是软件包支持的最低版本。
常见的配置文件名为.travis.ymlappveyor.ymlcircle.yml等。
示例:
.travis.yml

language: node_js
node_js:
  - "4"
  - "5"
  - "6"
  - "7"

此配置意味着该包可能支持Node.js v4+

f5emj3cl

f5emj3cl2#

如果这些是您自己的存储库,那么您可以将Node版本存储在包json中以供参考。

"version": "1.0.0",
"engines": {
    "node": "7.x"
},
"description": "..."

这不会自动设置正确的版本,但它会为您提供一个查找的地方。

0pizxfdo

0pizxfdo3#

如果节点引擎参数不是由开发人员在package.json中指定的,您可以尝试在您的节点模块的package.json中查看相同的参数。如果您使用的是公共油井支持模块,则可能会定义该参数。运行以下命令将为您提供一个半排序的版本列表。

grep -hoP '"node":.*' node_modules/*/package.json | sort

通常,需要最高版本节点的模块是决定项目工作所需节点版本的决定性因素。

dkqlctbz

dkqlctbz4#

如果您确实需要反复试验,您可以使用npm的node和npx来加速该过程

npx node@4 myscript.js

您甚至可以设置shell自动回退选项,

node@4 myscript.js
rdlzhqv9

rdlzhqv95#

项目可能有一个.nvmrc文件,其中包含该项目的有效版本。

os8fio9y

os8fio9y6#

目前,由于发布周期太快,版本的数量已经非常庞大。
比试错法更好的解决方案是查看项目使用的文件/文件夹的日期,并在以下链接中搜索节点版本的发布日期:
https://nodejs.org/en/download/releases/
在搜索框中,以空格开始,然后是发布版本的前1-2个数字,并检查发布日期。14(注意空格)将显示Node.js 14.xx.xx的发布版本。
虽然这不是一个完美的解决方案,因为该项目可能仍然是用一个甚至更旧的版本编写的,但它至少会显示一个兼容的版本,在那个时候。

相关问题