嵌套的条件


除了直接映射,Node.js 还支持嵌套条件对象。

例如,要定义一个包,它只有双模式入口点用于 Node.js 而不是浏览器:

{
  "main": "./main.js",
  "exports": {
    "node": {
      "import": "./feature-node.mjs",
      "require": "./feature-node.cjs"
    },
    "default": "./feature.mjs",
  }
}

条件继续按顺序与平面条件匹配。 如果嵌套条件没有任何映射,则将继续检查父条件的剩余条件。 通过这种方式,嵌套条件的行为类似于嵌套的 JavaScript if 语句。

In addition to direct mappings, Node.js also supports nested condition objects.

For example, to define a package that only has dual mode entry points for use in Node.js but not the browser:

{
  "main": "./main.js",
  "exports": {
    "node": {
      "import": "./feature-node.mjs",
      "require": "./feature-node.cjs"
    },
    "default": "./feature.mjs",
  }
}

Conditions continue to be matched in order as with flat conditions. If a nested conditional does not have any mapping it will continue checking the remaining conditions of the parent condition. In this way nested conditions behave analogously to nested JavaScript if statements.