![](/img/trans.png)
[英]How to determine what min/max node version my node app supports based on my dependencies
[英]How to find what node version a project supports
除了反复试验之外,还有其他方法可以检测我应该在存储库上使用哪个节点版本?
随着 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]
我不禁觉得这里缺少一些非常基本的东西。 感谢您与我分享的任何智慧!
正如其他答案中提到的,一些包在package.json
有一个engines
字段。 如果用户尝试在包不支持的 Node.js 版本上安装包, npm
会警告用户。 engines
字段如下所示:
{
"engines": {
"node": ">=4.0.0"
}
}
更多信息: https : //docs.npmjs.com/files/package.json#engines
此外,许多包都有一个 CI,如 TravisCI,设置为自动测试包。 这些 CI 配置文件通常包含要测试的 Node.js 版本列表。 通常,CI 配置中的最低版本号是包支持的最低版本。
常见的配置文件名有.travis.yml
、 appveyor.yml
、 circle.yml
等。
例子:
.travis.yml
:
language: node_js
node_js:
- "4"
- "5"
- "6"
- "7"
此配置意味着该包可能支持 Node.js v4+
如果这些是您自己的存储库,那么您可以将 Node 版本存储在包 json 中以供参考。
"version": "1.0.0",
"engines": {
"node": "7.x"
},
"description": "..."
这不会自动设置正确的版本,但它会为您提供查看的地方。
如果您确实需要反复试验,则可以使用 npm 的节点与 npx 结合来加速该过程
npx node@4 myscript.js
您甚至可以设置一个 shell autofallback 选项,所以只需
node@4 myscript.js
项目可能有一个包含有效版本的.nvmrc
文件。
如果开发人员未在 package.json 中指定节点引擎参数,您可以尝试查看节点模块的 package.json 中的相同参数。 如果您使用通用井支持模块,它可能会被定义。 运行以下命令将为您提供一个半排序的版本列表。
grep -hoP '"node":.*' node_modules/*/package.json | sort
通常,需要最高版本节点的模块决定了项目运行所需的节点版本。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.