TypeScript 中的 resolvePackageJsonImports
说明 resolvePackageJsonImports 为什么会让 TypeScript 读取 package.json imports 字段来解析以
#tech / dev
#resource / typescript
#type / concept
#status / growing
[!info] related notes
TypeScript 中的 resolvePackageJsonImports
一句话定义
resolvePackageJsonImports 用来控制 TypeScript 是否读取 package.json 的 imports 字段,来解析以 # 开头的内部导入。
核心机制 / 工作原理
官方文档直接说明:
- 它会让 TypeScript 在执行以
#开头的查找时 consult the imports field
例如:
import { foo } from "#internal/foo";
这种解析不再只靠普通路径规则,还要看当前文件祖先目录中的 package.json 是否定义了对应的 imports 映射。
最小例子 / 最小场景
官方文档同样明确给出默认值:
- 在
moduleResolution为node16、nodenext、bundler时,它默认就是true
所以只要你已经在现代解析模式下使用 #internal 风格导入,很可能已经依赖它。
边界与易混淆点
它不是 paths
paths更偏 TypeScript 项目内部映射resolvePackageJsonImports更偏现代包内部package.json imports条件映射
它和 resolvePackageJsonExports 是平行概念
exports更偏包对外暴露入口imports更偏包内部私有或半私有导入映射
它只在现代解析模式里最有意义
因此最相关的仍然是:
参考信息
- TSConfig
resolvePackageJsonImports: https://www.typescriptlang.org/tsconfig/resolvePackageJsonImports.html