pnpm 支持通过 Git URL、GitHub/GitLab/Bitbucket 简写或 git+ssh 协议从代码仓库安装依赖。可指定分支、标签、提交哈希或 semver 范围,如 pnpm add github:user/repo#v1.0.0 或 pnpm add user/repo#semver:^2.0.0。对于 monorepo 的子目录,可通过 path: 参数仅安装指定子目录。pnpm v11.21 起,对 GitHub、GitLab、Bitbucket 上的仓库统一通过规范 HTTPS URL 解析,锁文件不再记录 SSH URL,确保跨环境的一致性。
pnpm 支持从可访问的 HTTP/HTTPS URL 直接安装 tarball 包,如 pnpm add https://example.com/package.tgz。安装时会下载 tarball、计算哈希并记录到锁文件中。需注意,早期版本的 pnpm 对 HTTP/HTTPS tarball 依赖的完整性哈希记录存在缺陷,可能导致锁文件完整性校验被绕过,建议升级至最新版本以获得完整保护。
git 依赖和远程 tarball 属于"异域来源"(exotic sources),在传递依赖中使用可能引入供应链风险。pnpm 提供 blockExoticSubdeps 配置项,可阻止传递依赖使用异域来源,强制所有间接依赖从可信 registry 解析。对于直接依赖,建议优先使用 npm registry 发布的包而非 git 仓库,以降低风险。