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

coi*_*iso 6 node.js npm nvm

除了反复试验之外,还有其他方法可以检测我应该在存储库上使用的节点版本吗?

随着 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]
Run Code Online (Sandbox Code Playgroud)

我不禁感到这里缺少一些非常基本的东西。感谢您可以与我分享的任何智慧!

wiz*_*z94 13

如果开发人员未在 package.json 中指定节点引擎参数,您可以尝试在文件node_modules夹的 package.json 中查看相同的参数。如果您使用常见的、支持良好的模块,那么它很可能会被定义。运行以下命令将为您提供一个半排序的版本列表以供查看。

grep -hoP '"node":.*' node_modules/*/package.json | sort
Run Code Online (Sandbox Code Playgroud)

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


ano*_*ode 10

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


Rya*_*Zim 7

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

{
  "engines": {
    "node": ">=4.0.0"
  }
}
Run Code Online (Sandbox Code Playgroud)

更多信息:https : //docs.npmjs.com/files/package.json#engines


此外,许多包都有一个 CI,如 TravisCI,设置为自动测试包。这些 CI 配置文件通常包含要测试的 Node.js 版本列表。通常,CI 配置中的最低版本号是包支持的最低版本。

常见的配置文件名称.travis.ymlappveyor.ymlcircle.yml,等。

例子:

.travis.yml

language: node_js
node_js:
  - "4"
  - "5"
  - "6"
  - "7"
Run Code Online (Sandbox Code Playgroud)

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


小智 6

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

"version": "1.0.0",
"engines": {
    "node": "7.x"
},
"description": "..."
Run Code Online (Sandbox Code Playgroud)

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

  • 这是一个很好的方法,与开发操作技术(docker、kubernetes 等)结合起来非常有用,但问题是 github 上的许多存储库都有有用的示例,甚至内部项目都没有以这种方式指定节点版本: s (2认同)