主题
依赖解析与 node_modules
node_modules 是安装结果,不是依赖的唯一事实来源;package.json 声明允许范围,锁文件记录本次解析出的精确依赖图。
依赖类型
| 字段 | 用途 |
|---|---|
dependencies | 运行时需要的依赖 |
devDependencies | 开发、测试、构建需要的依赖 |
peerDependencies | 由使用者提供的宿主依赖或兼容范围 |
optionalDependencies | 安装失败不阻断主安装的可选能力 |
解析要点
- 内置模块优先;使用
node:可避免歧义。 - 相对路径从当前文件解析;包名从邻近的
node_modules向上查找。 - npm 会尽可能扁平化依赖;不能依赖未在自身
package.json声明、却恰好被提升到顶层的“幽灵依赖”。 exports存在时只能导入包显式公开的子路径。
不要手动编辑 node_modules。遇到依赖树问题使用 npm ls <package>、npm explain <package> 或包管理器的等价命令检查来源。
