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

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

老丝Jim猴子2020/03/23 10:33:53

还有另一种更简单的方法:

  1. npm install Node@8 (将Node 8保存为package.json中的依赖项)
  2. 您的应用程序将使用Node 8面向任何人运行-即使是Yarn用户!

之所以有效,node因为它只是一个将节点作为其二进制程序包提供的程序包。它仅包含为node_module / .bin,这意味着它仅使节点可用于程序包脚本。不是主壳。

在此处查看Twitter上的讨论:https//twitter.com/housecor/status/962347301456015360

猴子2020/03/23 10:33:53

package.json

  "engines": {
    "node": ">=10.0.0",
    "npm": ">=6.0.0"
  },

到文件.npmrc(靠近package.json,相同目录)

engine-strict=true
小小2020/03/23 10:33:53

我认为您可以使用“引擎”字段:

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

正如您所说的那样,您的代码绝对不能与任何较低版本一起使用,您可能也希望“ engineStrict”标志:

{ "engineStrict" : true }

在npmjs网站上找到package.json文件的文档

更新资料

engineStrict现在已弃用,因此只会发出警告。现在,取决于用户npm config set engine-strict true是否愿意运行它。

更新2

如下所述,在Node的版本不兼容的情况下,.npmrc在项目的根目录(与package.json文件处于同一级别)创建文件engine-strict=true将在安装过程中产生错误。

Tom凯2020/03/23 10:33:53

.nvmrc

如果您可能正在使用这样的NVM,则可以在git跟踪的.nvmrc文件中指示给定项目所需的nodejs版本

echo v10.15.1 > .nvmrc

这不会自动对生效cd,这是理智的:用户然后必须执行以下操作:

nvm use

现在该节点版本将用于当前shell。

您可以列出拥有的节点的版本:

nvm list

.nvmrc记录在:https : //github.com/creationix/nvm/tree/02997b0753f66c9790c6016ed022ed2072c22603#nvmrc

在以下cd位置询问如何自动选择该节点版本根据项目自动切换到正确的Node版本

使用NVM 0.33.11测试。