Golang开发者都在哪里找包?有没有人对更好的解决方案感兴趣?
Golang开发者都在哪里找包?有没有人对更好的解决方案感兴趣? 我是Go语言的新手,但已经开始怀念像NPM那样的包发现工具了。虽然这个问题在很多地方都被问过,但我还是想问:大家是如何发现Go包的?
以下是我目前找到的一些途径。
pkg.go.dev(或godoc.org)- 在
GitHub上使用language:go关键词进行搜索 search.gocenter.iogo-search.orgawesome-go
我觉得这些途径在几个方面有所欠缺。
pkg.go.dev- 没有排序功能
- 发布是通过代理使用吗?
godoc.org- 没有排序功能
- 发布是通过显式搜索吗?
GitHub- 并非真正搜索可用的模块,只是所有Go语言项目。
- 星标是衡量受欢迎程度的指标,而非使用量。
search.gocenter.io- 没有排序功能
- 匹配效果很差
- 必须发布到jfrog?
- 总之不太好用。
go-search.org- 目前无法访问。
awesome-go- 只是一个静态文档。
- 它们都没有任何元数据机制(如URL、作者、联系方式、关键词等)。
我在考虑创建一个网站,来添加一些我想要的功能。
- 搜索并查看内联元数据
- URL(问题跟踪器、主页等)
- 作者/贡献者/联系方式
- 组织
- 关键词
- 等等。
- 排序功能
- 受欢迎程度
- 取以下最大值:收藏数、GitHub星标数或等效的GitHub星标数。
- 导入次数
- 基于索引包中 go.mod 的内容
- 活跃度
- 基于版本数量、发布频率、最近版本更新。
- 质量
- 测试等。
- 受欢迎程度
- 保存“收藏”的包
- 用于“发布”包的CLI工具
- 一种将包显式添加到索引中的方式。
- 引导元数据的初始化功能。
问这个问题可能有点冒险,但这样的项目对任何人来说会是有趣/有用/受欢迎的吗?
这也是我第二次涉足Go社区,所以我很想看看会得到什么样的回应 :)。
更多关于Golang开发者都在哪里找包?有没有人对更好的解决方案感兴趣?的实战教程也可以访问 https://www.itying.com/category-94-b0.html
我通常直接谷歌搜索,go(lang) $topic package,这样通常能得到不错的结果。
更多关于Golang开发者都在哪里找包?有没有人对更好的解决方案感兴趣?的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
我通常使用 Godoc 来浏览我想要的包,仔细查看,如果发现有趣,就转到其相应的 GitHub 链接获取源代码。从未觉得这很繁琐。与其他语言相比,包发现一直更简单,在我看来。
对于Go包发现,目前确实主要依赖pkg.go.dev和GitHub搜索。你提到的痛点很实际,特别是缺少排序和元数据。下面是一个技术角度的分析:
现有工具的技术局限:
pkg.go.dev的排序问题源于其设计重点在文档展示而非发现。它通过代理索引模块,但未公开排序API。- GitHub搜索的
language:go会匹配所有Go文件,包括非模块项目,需手动过滤。 - 元数据缺失是因为Go模块的
go.mod仅包含必需字段(module、go、require),没有扩展元数据的标准方式。
实现方案的技术要点:
- 元数据扩展:可在
go.mod中添加//注释存储额外信息,或使用独立元数据文件(如.gometa.json)。示例:
// go.mod 注释示例
module github.com/user/pkg
go 1.21
// Metadata:
// keywords: http,router
// homepage: https://pkg.example.com
// repository: github.com/user/pkg
- 索引构建:需爬取GitHub/GitLab和代理数据,解析
go.mod及元数据。可定期同步代理更新。 - 排序算法:需结合多源数据:
type PackageScore struct {
Stars int // GitHub星标
ImportCount int // 解析go.mod统计
RecentCommit time.Time // 最近提交
TestCoverage float64 // 测试覆盖率(需分析)
}
- CLI工具:可参考
go mod命令设计,添加元数据初始化:
# 示例命令
gometa init --keywords="http,router" --homepage="https://pkg.example.com"
技术挑战:
- 数据一致性:需处理GitHub与代理间的版本差异。
- 导入量统计:需扫描公开代码库的
go.mod,计算量较大。 - 质量指标:测试覆盖率等需静态分析或依赖第三方服务(如Coveralls)。
社区已有尝试:
lib.rs(Rust)的Go版本概念:部分功能可通过扩展pkg.go.dev实现,但需修改上游。go-search.org曾尝试类似方案,但维护成本高导致关闭。
如果实现,建议先构建最小原型(如仅GitHub索引+基础排序),再逐步扩展。Go社区对工具类项目接受度较高,但需解决实际痛点而非重复造轮子。

