You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Swift Package Manager能否使用shallow clone浅克隆解决大依赖拉取问题

SPM 浅克隆功能实现方案

功能支持说明

Swift 5.7(对应Xcode 14及更高版本)开始原生支持浅克隆功能,低于该版本的Swift工具链无原生浅克隆能力,需使用替代方案解决大仓库拉取慢的问题。

双场景操作步骤

命令行场景

执行依赖拉取、更新命令时增加--clone-depth参数指定克隆深度即可,常用命令如下:

  • 拉取项目所有依赖:swift package resolve --clone-depth 1
  • 更新项目所有依赖:swift package update --clone-depth 1
    设置深度为1时只会拉取对应版本的最新一层提交历史,可将nlohmann/json这类仓库的拉取体积从300MB缩小到几MB级别。

Xcode图形界面场景

Xcode未提供可视化的浅克隆开关,可通过两种方式实现:

  1. 全局修改Xcode默认SPM行为:
    打开终端执行命令:defaults write com.apple.dt.Xcode IDEPackageSupportCloneDepth 1,执行完成后重启Xcode,后续所有通过Xcode拉取的SPM依赖都会自动使用深度为1的浅克隆。
    若需要恢复完整克隆,执行defaults delete com.apple.dt.Xcode IDEPackageSupportCloneDepth后重启Xcode即可。
  2. 单项目临时使用:
    先在终端进入项目根目录,执行命令行场景的swift package resolve --clone-depth 1完成依赖拉取,再打开Xcode即可复用已经拉取好的浅克隆缓存,不会触发完整仓库克隆。

注意事项

浅克隆仅适用于无需查看依赖历史提交、无需切换到更早依赖版本的场景,如有相关需求请使用默认完整克隆。

低版本兼容方案

如果使用的Swift版本低于5.7,可选择以下两种替代方案:

  • 手动fork依赖仓库,删除冗余的测试、文档、历史提交内容,仅保留必要的源码和Package.swift文件,项目指向fork后的仓库地址即可
  • 直接将nlohmann/json所需的单个头文件和实现文件拖入项目中,跳过SPM引入流程,彻底避免大仓库拉取问题

内容的提问来源于stack exchange,提问作者Richard Topchii

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 00:15:04