为何pnpm在安装时显示废弃子依赖的行为不一致?
以下是可能导致两个仓库pnpm警告行为不同的原因,你可以逐一排查:
依赖安装状态与lockfile:如果第二个仓库已经有完整的
node_modules和pnpm-lock.yaml,且后续没有修改依赖配置或更新lockfile,pnpm在执行install或--resolution-only时可能不会重新扫描依赖的废弃状态。尝试删除第二个仓库的pnpm-lock.yaml和node_modules,重新执行pnpm install,看是否会出现警告。缓存元数据差异:pnpm的全局缓存可能存储了依赖的旧元数据,若第二个仓库安装依赖时,对应的子依赖还未被标记为废弃,后续未触发缓存更新的话就不会显示警告。执行
pnpm store prune清除全局缓存后,再重新安装第二个仓库的依赖试试。日志级别配置:检查两个仓库的日志级别设置,执行
pnpm config get loglevel对比结果。如果第二个仓库的loglevel被设为error,会屏蔽所有警告信息,自然看不到废弃依赖的提示。依赖覆盖配置:查看第二个仓库
package.json中的pnpm.overrides字段,是否强制将废弃的子依赖替换为了其他非废弃版本,这样依赖树中就不存在废弃子依赖,也就不会触发警告。lockfile版本差异:不同版本的pnpm生成的
pnpm-lock.yaml结构可能不同,旧版lockfile可能未记录依赖的废弃状态信息。如果第二个仓库的lockfile是用旧版pnpm生成的,即使现在用新版pnpm,也可能不会触发废弃检查,更新lockfile后应该会显示警告。
内容的提问来源于stack exchange,提问作者Auth Infant

