Skip to content

🚀 什么是 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+IsPackageInstalledGetProjectSummary 等快捷辅助

🌰 一个最简示例

下面这段代码演示了"零配置自动安装 + 类型化审计"——如果机器上没装 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 架构

🧭 接下来

一句话总结

别再手写 exec.Command 解析了。一个 import,类型化 API + 自动安装 + 跨平台,全部到位。

基于 MIT 许可证发布