前端知库

package.json 的 exports 和 imports 分别解决什么问题?

参考答案

exports 定义包对消费者公开的入口和子路径,也可按 import、require 等条件选择不同目标。在支持的 Node.js 版本中,它优先于 main。已有包新增 exports 时,原先可深层导入却未被列出的路径可能失效,因此可能构成破坏性变更。

imports 用于包内部的映射,常以 # 开头,让内部引用有明确边界。条件入口需要注意匹配顺序,并核对 Node、类型检查器及打包器的实际解析规则,不能假定所有工具都使用同一条件集合。

这些字段定义的是模块接口和解析规则,不是文件访问权限。包内文件如果已经交付给用户,不能靠 exports 当作机密隔离。发布前应从独立消费者项目测试公开入口、类型声明和两种模块使用方式。