🚀 什么是 Composer Skills
PHP Composer 生态缺失的 Go SDK —— 一个
import就能获得类型化、经过测试的 API,覆盖 Packagist REST API 和所有 Composer CLI 命令,还自带零配置自动安装。
🎯 项目定位
Composer Skills 是一套用 Go 语言编写的 SDK,专门为需要和 PHP/Composer 生态打交道的开发者准备。它把两件事打包到同一个包里:
- 🌐 Packagist REST API 客户端(纯 Go,无需 PHP)—— 搜索包、查询统计、拉取安全公告。
- 🛠️ Composer CLI 封装 SDK(执行本地
composer二进制)—— 安装/更新依赖、审计漏洞、管理项目、配置认证。
包路径:
github.com/scagogogo/composer-skills💔 解决的核心痛点
如果你写过 Go 代码并且要调用 Composer,你大概率写过这种脆弱到一碰就碎的代码:
go
// 😩 老方法 —— 脆弱、无类型、没有错误处理
out, _ := exec.Command("composer", "audit").Output()
lines := strings.Split(string(out), "\n")
// 然后还得自己解析这些字符串……格式一变就崩Composer Skills 给你的是这样的:
go
// 😊 新方法 —— 类型化、经过测试、自动安装
result, _ := comp.AuditWithJSON()
fmt.Printf("漏洞数: %d\n", result.Found)📊 核心数据
| 指标 | 数值 | 说明 |
|---|---|---|
| 🛠️ SDK 方法 | 234 | 封装所有标准 Composer CLI 命令,20 个分类 |
| 🌐 API 方法 | 20 | 覆盖 Packagist 搜索、统计、安全公告、列表、管理 |
| 🧪 测试用例 | 450+ | 基于 Mock 隔离,CI 全量验证 |
| ⌨️ CLI 子命令 | 50+ | 从终端暴露全部 SDK 能力 |
| 💡 便捷方法 | 18+ | IsPackageInstalled、GetProjectSummary 等快捷辅助 |
🌰 一个最简示例
下面这段代码演示了"零配置自动安装 + 类型化审计"——如果机器上没装 Composer,它会自动帮你装上:
go
package main
import (
"fmt"
"log"
"github.com/scagogogo/composer-skills/pkg/composer"
)
func main() {
// 默认 Options 已开启 AutoInstall,缺失会自动安装
comp, err := composer.New(composer.DefaultOptions())
if err != nil {
log.Fatal(err)
}
comp.SetWorkingDir("/path/to/php/project")
// 结构化审计结果,告别字符串解析
result, err := comp.AuditWithJSON()
if err != nil {
log.Fatal(err)
}
fmt.Printf("发现漏洞: %d\n", result.Found)
}不需要 PHP 也能用
如果你只想查询 Packagist(搜索包、看统计、拉安全公告),使用 pkg/client 即可,它是纯 Go 实现,完全不需要本地安装 PHP 或 Composer。详见 双 SDK 架构。
🧭 接下来
- 🚀 第一次用?看 快速开始,5 分钟跑通第一个示例。
- 📦 准备集成到项目?看 安装,了解依赖与系统要求。
- 🤔 想理解设计思路?看 它解决了什么问题 和 双 SDK 架构。
- 🔄 想放进 CI?看 CI/CD 流水线 和 Docker 部署。
一句话总结
别再手写 exec.Command 解析了。一个 import,类型化 API + 自动安装 + 跨平台,全部到位。