![](/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.