首页
学习
活动
专区
圈层
工具
发布
技术百科首页 >pnpm >pnpm 如何处理 git 依赖和 tarball 依赖?

pnpm 如何处理 git 依赖和 tarball 依赖?

词条归属:pnpm

1. Git 仓库依赖

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,确保跨环境的一致性。

2. 远程 tarball 依赖

pnpm 支持从可访问的 HTTP/HTTPS URL 直接安装 tarball 包,如 pnpm add https://example.com/package.tgz。安装时会下载 tarball、计算哈希并记录到锁文件中。需注意,早期版本的 pnpm 对 HTTP/HTTPS tarball 依赖的完整性哈希记录存在缺陷,可能导致锁文件完整性校验被绕过,建议升级至最新版本以获得完整保护。

3. 安全注意事项

git 依赖和远程 tarball 属于"异域来源"(exotic sources),在传递依赖中使用可能引入供应链风险。pnpm 提供 blockExoticSubdeps 配置项,可阻止传递依赖使用异域来源,强制所有间接依赖从可信 registry 解析。对于直接依赖,建议优先使用 npm registry 发布的包而非 git 仓库,以降低风险。

相关文章
浅谈NPM怎样处理处理依赖和冲突
其实我们都知道早期版本的的 npm (v2) 管理模块依赖的方式并不复杂。它读取每个模块的依赖列表,并下载匹配版本的依赖模块到该模块目录内的 node_modules 文件夹下;如果该依赖又依赖了其他的模块,会继续下载该依赖的依赖到该模块目录的 node_modules 文件夹下——如此递归执行下去,最终形成一颗庞大的依赖树。
前端老道
2022-03-28
4.5K0
再探循环依赖 → Spring 是如何判定原型循环依赖和构造方法循环依赖的?
侄子:那你赶紧给我妈花吧,我妈要是跑了,你还得花钱娶一个,到最后,钱我捞不着,亲妈还混没了
青石路
2021-03-15
1.6K0
Java模块依赖管理:如何定义和导出模块?如何解决模块间依赖冲突?
在 Java 模块化系统(JPMS) 中,模块依赖管理是核心,也是开发者最常遇到的问题之一。很多开发者在模块化项目中遇到以下挑战:
猫头虎
2024-12-25
1.4K0
从单体到微服务,腾讯文档微服务网关工程化的演进实践
腾讯文档网关既承担着流量入口角色,又面临复杂的多适配逻辑,历经多次迭代后从单体演变为了微服务架构。本文是腾讯文档微服务网关工程化的演进实践总结,为你分享从 node Monorepo 微服务架构下使用 pnpm 与 Docker 构建的优化与思考。
腾讯云开发者
2023-11-29
1.3K1
如何通过命令行安装OpenClaw并确保依赖的Node.js 和 Git 已正确配置
通过命令行安装OpenClaw后,可能会遇到这样的问题:运行安装命令后,终端提示“node 未找到”或“git 不是内部或外部命令”。这通常是因为系统缺少 Node.js 或 Git,或者它们的环境变量未正确配置。为了顺利安装OpenClaw,要确保这两个依赖已正确安装并配置。本文将带你一步步操作,从验证依赖开始,到最终成功安装OpenClaw。
智客笔记
2026-03-20
3.8K0
点击加载更多
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
领券