常见问题
- 什么是 Swift Package Index?
- 什么是 Swift Package Manager?
- 谁构建了 Swift Package Index?
- 我可以支持 Swift Package Index 吗?
- SwiftPM Library 发生了什么?
- Swift Package Index 是如何工作的?
- GitHub Package Registry 怎么样?
- Swift 语言和平台支持是如何计算的?
- Swift Package Index 可以托管我的软件包文档吗?
- 为什么某些许可证会被突出显示?
- 我可以为 Swift Package Index 做贡献吗?
- 有 API 吗?
- 为什么软件包版本缺失?
- 什么是 SPI-Playgrounds 应用程序?
- 如何过滤搜索结果?
什么是 Swift Package Index?
Swift Package Index 是一个搜索引擎,用于搜索支持 Swift Package Manager 的软件包。
但是这个网站不仅仅是一个搜索工具。选择正确的依赖项不仅仅是找到符合您需要的代码。您选择的库是否维护良好?它们开发了多久?它们是否经过良好测试?挑选高质量的软件包很困难,而 Swift Package Index 帮助您更好地做出关于依赖项的决策。
什么是 Swift Package Manager?
Swift Package Manager 是 Apple 作为 Swift 项目的一部分构建的工具,用于将库和框架集成到您的 Swift 应用程序中。它于 2015 年发布,并在 2019 年与 Xcode 11 集成。
要了解有关 Swift Package Manager 的更多信息,请参阅 Apple 开发者网站上的文档。
谁构建了 Swift Package Index?
感谢您的提问!它由 Dave Verwer 和 Sven A. Schmidt 构建。您还可以查看完整的贡献者列表。
我可以支持 Swift Package Index 吗?
我们很乐意获得您的支持。谢谢!您可以阅读更多关于我们如何资助这个项目以及通过 GitHub Sponsors 支持它的信息。
SwiftPM Library 发生了什么?
本网站是 SwiftPM Library 的精神继承者和替代品。它已使用 Vapor 在 Swift 中从头开始重新实现,并且同时更改了名称。我们从最初的实现中吸取了许多宝贵的教训,Swift Package Index 是 Swift 软件包搜索的未来。
Swift Package Index 是如何工作的?
此索引中的数据源自 此仓库列表。当有人将仓库添加到软件包列表时,本网站会立即完整克隆软件包源代码。元数据从源代码和本地 git 历史记录以及 GitHub 上托管的仓库中提取。
软件包也会每隔几个小时轮询更改,因此您在索引中看到的信息始终反映最新的软件包版本,而无需软件包作者执行任何操作。
GitHub Package Registry 怎么样?
我们很高兴看到 GitHub Package Registry 获得对 Swift 软件包的支持。关于 Swift Package Manager 支持正式支持软件包注册表,有一个提案正在讨论中,但软件包注册表不是像本网站这样的软件包搜索引擎。如果 Swift 项目接受该提案,本网站将支持 GitHub Package Registry 以及任何其他重要的软件包注册表实现,并在它们可用时对其进行索引。
Swift 语言和平台支持是如何计算的?
Swift Package Index 包括无法从软件包清单中导出的构建信息。包括 Swift 版本兼容性和平台兼容性的全面覆盖,包括 Linux!

为了确定软件包支持的 Swift 版本以及它兼容的平台,Swift Package Index 使用多个针对不同平台的 Swift 编译器运行真实世界的构建。您可以在Swift Package Index 构建系统常见问题解答中了解更多关于我们如何做到这一点的信息。
Swift Package Index 可以托管我的软件包文档吗?
Swift Package Index 构建系统可以生成和托管 DocC 文档,并使其从您软件包在索引中的页面中可用。我们只需要一点配置数据,以便我们知道如何最好地构建您的文档。您可以在这篇介绍性文章和官方文档中了解有关此功能的更多信息。
为什么某些许可证会被突出显示?
如果软件包的许可证显示橙色或红色感叹号图标,则有以下三个原因之一
- 软件包没有许可证。
- 我们无法自动检测软件包使用的软件许可证。
- 软件包作者选择的许可证可能与 App Store 不兼容。
无许可证
如果软件包许可证显示为“无许可证”并带有红色感叹号图标,则我们在软件包仓库中找不到任何许可证信息。
使用没有许可证的软件包会带来重大的法律风险。未许可的代码不是开源的,原始作者默认保留所有权利。有关更多信息,请阅读关于使用未许可代码的这篇精彩的博客文章。
如果您是软件包作者,您可以通过在软件包仓库中添加带有开源许可证的 LICENSE
文件来解决此问题。Swift Package Index 将在您添加许可证后几个小时更新许可证元数据。
未知许可证
如果软件包许可证显示为“未知许可证”并带有橙色感叹号图标,则我们无法自动检测软件包仓库中的许可证。
自动检测失败可能有几个原因。软件包可能使用商业或闭源许可证,或者可能是 GitHub 的许可证检测算法失败了。在使用具有未知许可证的软件包之前,您应该检查软件包仓库中是否有 LICENSE
文件,并确保您理解软件包作者定义的条款。
如果您是显示未知许可证的软件包的作者,并且认为它应该显示有效的开源许可证,请参阅 GitHub 的文档。Swift Package Index 将在 GitHub 识别有效许可证后几个小时更新许可证。
不兼容的许可证
如果软件包许可证显示橙色感叹号图标,但没有说“无许可证”或“未知许可证”,则软件包正在使用的许可证可能与 App Store 的工作方式不兼容,例如 GPL 风格的许可证。如果您正在考虑发布包含使用这些许可证之一许可的软件包的软件到 App Store,您应该意识到使用在这些许可证之一许可下许可的代码可能会带来法律风险。
我可以为 Swift Package Index 做贡献吗?
当然可以。Swift Package Index 是开源的,如果您想帮助我们做得更好,我们将非常欢迎。请参阅我们 README 中的贡献指南以获取更多信息。
所有参与此项目的行为,无论是贡献代码、在讨论或问题中沟通,还是拉取请求,都受到我们的行为准则的约束。请在贡献之前阅读行为准则。
有 API 吗?
目前还没有。Swift Package Index 目前正处于快速开发期,我们希望在这个项目生命的这个阶段能够灵活地进行更改。不过,这已列入未来的计划!
为什么软件包版本缺失?
软件包版本必须使用完全限定的 语义版本的 git 标签。例如,2.6.0
是有效的语义版本号,而 2.6
不是。
检查软件包的最新语义版本发布的一个好方法是在 Xcode 中将其添加到项目中。默认情况下,Xcode 在将软件包添加到项目时会显示最新的语义版本。您在本网站上看到的数字应该与 Xcode 在添加软件包时显示的版本相匹配。如果您看到不同的内容,请提出 issue!

什么是 SPI-Playgrounds 应用程序?
您是否曾经想在决定使用软件包之前在 Swift playground 中试用它?从任何软件包页面点击“在 Playground 中尝试”,让 Swift Package Index Playgrounds 应用程序创建一个 playground,其中自动导入了该软件包,可用于测试和实验。
如果您没有安装 SPI-Playgrounds 应用程序,您可以在此处下载 macOS 版本。
如何过滤搜索结果?
您可以使用搜索语法缩小软件包搜索结果,该语法根据软件包元数据进行过滤。例如,您可以搜索匹配“networking”并且星数超过 500 的软件包。
支持以下软件包元数据字段
author
(作者):软件包仓库的所有者。last_activity
(日期):软件包仓库上最近的维护活动。对默认分支的任何提交或合并/关闭 issue 或拉取请求都算作维护活动。last_commit
(日期):软件包仓库的上次提交日期。license
(许可证):软件包的许可证。keyword
(关键词):按匹配的软件包关键词过滤。platform
(平台):按一个或多个兼容平台(iOS、macOS、watchOS、tvOS 或 Linux)过滤。stars
(星数):软件包拥有的星数。product
(产品):软件包应包含的产品类型(可执行文件、库、插件)。
使用 >
、>=
、<
和 <=
来过滤大于、大于或等于、小于和小于或等于另一个值的值。所有过滤器都与 AND 运算符组合使用。
例如,http stars:>500 platform:ios,linux
的查询显示与单词“http”匹配、星数超过 500 且与 iOS 和 Linux 平台都兼容的软件包。
查询数字值
您可以使用任何整数和标准 >
、>=
、<
和 <=
运算符来过滤数值。
查询日期值
使用 ISO8601 格式指定所有日期,即 YYYY-MM-DD
(年-月-日)。您可以使用标准 >
、>=
、<
和 <=
运算符过滤日期。
例如,charts last_activity:>=2021-02-01
的查询显示与单词“charts”匹配并且自 2021 年 2 月初以来也收到一些维护活动的软件包。
查询许可证值
您可以通过简单地查询 license:compatible
来搜索具有与 App Store 兼容的许可证的软件包。
您还可以从内置选项中指定您希望软件包拥有的特定许可证。例如,license:lgpl-2.1
的查询匹配任何在 LGPL 2.1 下许可的软件包。
查询作者或关键词值
您可以通过过滤 author
来搜索由特定用户或组织创建的软件包。例如,fluent author:vapor
的查询匹配任何包含单词“fluent”且由 vapor 组织拥有的软件包。
同样,您可以使用 keyword
过滤器搜索包含关键词的软件包。例如,keyword:accessibility
匹配任何具有“accessibility”关键词的软件包。
查询平台值
您可以使用 platform
过滤器搜索与平台兼容的软件包。用逗号分隔指定多个平台。例如,testing platform:ios,linux
显示与单词“layout”匹配且与 iOS 和 Linux 都兼容的软件包。
注意: 平台兼容性数据来自构建系统,并来源于真实世界的构建结果。
使用过滤器排除结果
您还可以通过在过滤器值前加上 !
字符来排除与过滤器匹配的软件包。例如,搜索 license:!mit
匹配不以 MIT 许可证许可的软件包。