TypeScript 中的 resolvePackageJsonImports

说明 resolvePackageJsonImports 为什么会让 TypeScript 读取 package.json imports 字段来解析以

#tech / dev #resource / typescript #type / concept #status / growing

[!info] related notes

TypeScript 中的 resolvePackageJsonImports

一句话定义

resolvePackageJsonImports 用来控制 TypeScript 是否读取 package.jsonimports 字段,来解析以 # 开头的内部导入。

核心机制 / 工作原理

官方文档直接说明:

  • 它会让 TypeScript 在执行以 # 开头的查找时 consult the imports field

例如:

import { foo } from "#internal/foo";

这种解析不再只靠普通路径规则,还要看当前文件祖先目录中的 package.json 是否定义了对应的 imports 映射。

最小例子 / 最小场景

官方文档同样明确给出默认值:

  • moduleResolutionnode16nodenextbundler 时,它默认就是 true

所以只要你已经在现代解析模式下使用 #internal 风格导入,很可能已经依赖它。

边界与易混淆点

它不是 paths

  • paths 更偏 TypeScript 项目内部映射
  • resolvePackageJsonImports 更偏现代包内部 package.json imports 条件映射

它和 resolvePackageJsonExports 是平行概念

  • exports 更偏包对外暴露入口
  • imports 更偏包内部私有或半私有导入映射

它只在现代解析模式里最有意义

因此最相关的仍然是:

参考信息

创建于 2026/5/15 更新于 2026/5/27