← [ BACK_TO_NOTES ]

TypeScript 中的 customConditions

说明 customConditions 如何给 TypeScript 的包导出条件解析追加自定义条件,以及它为什么只在 node16、nodenext、bundler 这类现代解析模式下有效。

#dev #typescript #concept #growing

[!info] related notes

TypeScript 中的 customConditions

一句话定义

customConditions 用来给 TypeScript 在解析 package.json 的 exports / imports 时追加自定义条件名。

核心机制 / 工作原理

官方文档说明,这个选项接收一组额外 conditions。

当 TypeScript 在解析包的:

  • exports
  • imports

字段时,它会把这些自定义条件加入默认解析条件集合里。

例如:

{
  "compilerOptions": {
    "moduleResolution": "bundler",
    "customConditions": ["my-condition"]
  }
}

那么当目标包的 package.json 中存在:

{
  "exports": {
    ".": {
      "my-condition": "./foo.mjs",
      "import": "./bar.mjs"
    }
  }
}

TypeScript 就会优先考虑 my-condition 对应的分支。

最小例子 / 最小场景

这通常出现在:

  • 多环境包导出
  • 内部包有自定义条件分支
  • bundler / modern runtime 与类型解析需要对齐

边界与易混淆点

它不是“任意模式都能用”

官方文档明确写明,它只在这些 moduleResolution 下有效:

  • node16
  • nodenext
  • bundler

它不等于 paths

paths 更像项目内部的映射;

而 customConditions 更像:

  • 参与 package.json exports/imports 条件选择

它是现代包条件导出的细化开关

如果项目根本没有用到 exports / imports 条件分支,这个选项通常没有存在感。

参考信息

创建于 2026/5/15 更新于 2026/7/15
Digital Biome
Access

键盘导航

j / k / ↑ / ↓
选择对象
Enter / o
打开选择
/ 或 Ctrl+K
全站搜索
i / f / 1–4
筛选当前列表
g → h / l / p / t / a
首页 / 笔记 / 项目 / 工具 / About
r → 1–9
打开所选对象的关联
u
返回上一页
Esc
关闭浮层 / 取消命令;输入框内清空文本