有没有办法发现所有具有特定存储库Foo/Bar作为依赖项的公共 GitHub 存储库?
我对PHP上下文感兴趣(所以主要与作曲家有关)。
我想知道是否有一些特定于作曲家的(也许依赖于Packagist?)或一些通用解决方案。
鉴于您的具体要求,我过去这样做的一种方法是使用Google的GitHub Data for BigQuery。
例如,此查询将返回具有已提交composer.lock
文件的所有存储库,其中包含Foo/Bar
。
SELECT f.repo_name
FROM [bigquery-public-data:github_repos.files] f
JOIN [bigquery-public-data:github_repos.contents] c
ON f.id = c.id
WHERE f.path = 'composer.lock'
AND c.content LIKE '%"name": "Foo/Bar"%'
现在这有一些问题,例如:
有些包不会提交
composer.lock
因此您也可以检查composer.json
中的直接依赖项,但这不会给您 100% 的结果。根据包名称的唯一性
Foo/Bar
此字符串有可能出现在锁定文件的其他位置。您可能需要调整查询。这些查询需要很长时间才能运行。
Google没有为其免费计划提供大量带宽配额,因此您可能会发现自己每月只能运行几次免费查询。在完整大小数据集上运行之前,请确保在较小的示例数据集上练习查询。
如果应用程序
Fred
取决于库baz
而baz
取决于Foo/Bar
您是将其算作 2 个依赖项还是仅 1 个具有传递依赖项?如果Fred
和baz
都提交了composer.lock
文件,则此查询会将这些计为 2。
尽管如此,对库的使用范围有某种了解是一个起点。