如何在 package.json 中指定所需的 Node.js 版本?

新手上路,请多包涵

我有一个需要 Node 版本 12 或更高版本的 Node.js 项目。有没有办法在 packages.json 文件中指定这个,这样安装程序会自动检查并通知用户是否需要升级?

原文由 Erel Segal-Halevi 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 3.7k
2 个回答

您可以在 package.json 中设置 engines 字段,并为 nodenpm 中的任何一个设置要求:

   "engines" : {
    "npm" : ">=8.0.0 <9.0.0",
    "node" : ">=16.0.0 <17.0.0"
  }

要通过 npm 强制执行此操作,您需要创建一个 .npmrc 文件(并将其提交到存储库)并将 engines-strict 选项设置为 true ,这将导致 npm —如果所需的引擎版本不匹配,诸如 npm install 之类的命令将失败:

 # .npmrc
engine-strict=true

如果没有该文件,每个开发人员都需要在本地工作区中运行 npm config set engine-strict true 才能打开此选项。

原始答案

正如您所说,您的代码绝对不适用于任何较低版本,您可能也需要“engineStrict”标志:

 { "engineStrict" : true }

package.json 文件的文档可以 在 npmjs 站点上 找到

更新

engineStrict 现在已弃用,因此只会发出警告。现在由用户来运行 npm config set engine-strict true 如果他们想要这个。

更新 2

正如下面所指出的,在项目的根目录(与 package.json 文件相同的级别)创建一个 .npmrc 文件,其中包含文本 engine-strict=true 将在安装期间强制出错,如果Node 版本不兼容。

原文由 IBam 发布,翻译遵循 CC BY-SA 4.0 许可协议

将以下内容添加到 package.json

   "engines": {
    "npm": ">=8.0.0 <9.0.0",
    "node": ">=16.0.0 <17.0.0"
  },

将以下内容添加到 .npmrc (与 package.json 相同的目录):

 engine-strict=true

原文由 Mikel 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进