package.json中的节点引擎8.x或10.x.

rap*_*2-h 25 javascript node.js npm package.json yarnpkg

我试图在package.json中指定节点引擎来接受它们810版本.

我试着输入这个:

"engines": {
  "node": "8.x|10.x"
},
Run Code Online (Sandbox Code Playgroud)

但运行yarn结果:

引擎"节点"与此模块不兼容.预期版本"8.x | 10.x"

如果我替换为:

"engines": {
  "node": "10.x"
},
Run Code Online (Sandbox Code Playgroud)

......它有效(即没有错误).

有没有办法接受两个版本的节点引擎package.json

Que*_*tin 43

请参阅包含示例的文档.

提供空格分隔的引擎列表,其中包含大于/小于符号.

{ 
  "engines" : { 
    "node" : ">=8.0.0 <11.0.0" 
  }
}
Run Code Online (Sandbox Code Playgroud)

  • 由于这包括所请求的节点版本,它确实是错误的,但它并没有解决实际问题,因为它也包括所有9.x,这似乎是这里的实际问题? (4认同)
  • 如果您有两个约束,如下所示...阅读“大于 8 且小于 11”,您可以使用空格。如果您想要有多个变体,则必须使用“||” (2认同)

Gab*_*e M 29

你只需要双管||而不是单管.

"engines": {
  "node": "^8 || ^10"
}
Run Code Online (Sandbox Code Playgroud)

将匹配v8.xx或v10.xx但匹配v9.

你可以在这里阅读更多相关信息https://docs.npmjs.com/files/package.json#dependencies

  • @giovannipds 不,这是一个 AND 条件,所以版本要么支持,要么不支持。如果用户运行的是已弃用的 Node 版本,您可以在安装过程中添加提示。类似于“您正在使用 Node v8。它将在下一个版本中弃用”。在 package.json 中使用“postinstall”钩子可以用于自定义逻辑。可以从 ENV 变量检查节点版本。 (2认同)