Skip to content

📦 安装

本页介绍 Composer Skills 的安装方式、依赖要求、验证方法与可选环境变量。

🚀 一行安装

bash
go get github.com/scagogogo/composer-skills

然后整理依赖:

bash
go mod tidy

国内加速

如果你在国内,建议设置 Go 模块代理:

bash
go env -w GOPROXY=https://goproxy.cn,direct

📋 依赖要求

Composer Skills 包含两套 SDK,它们的运行时要求不同:

SDK包路径需要 PHP?需要 Composer?
🌐 Packagist APIpkg/clientpkg/repository❌ 不需要❌ 不需要
🛠️ Composer CLIpkg/composer✅ PHP 7.4+✅ Composer 2.0+

公共要求:

  • Go 1.23+go.mod 声明 go 1.23.0toolchain go1.23.2

不装 PHP 也能用一半

只要你的场景是"查 Packagist"(搜索、统计、安全公告、包列表),用 pkg/client 就够了,纯 Go,零外部依赖。只有调用 pkg/composer 的本地命令(install、audit、require 等)才需要 PHP + Composer。

✅ 验证安装

把下面这段保存为 main.go,能跑通就说明安装成功:

go
package main

import (
    "fmt"
    "time"

    "github.com/scagogogo/composer-skills/pkg/client"
    "github.com/scagogogo/composer-skills/pkg/detector"
)

func main() {
    // 1. Packagist API:纯 Go,立即可用
    c := client.NewComposerClient(30 * time.Second)
    stats, err := c.GetStatistics()
    if err != nil {
        fmt.Printf("❌ Packagist API 调用失败: %v\n", err)
    } else {
        fmt.Printf("✅ Packagist API 正常,总包数: %d\n", stats.Packages)
    }

    // 2. 检测本地 Composer
    d := detector.NewDetector()
    if d.IsInstalled() {
        path, _ := d.Detect()
        fmt.Printf("✅ 检测到 Composer: %s\n", path)
    } else {
        fmt.Println("ℹ️ 未检测到 Composer,调用 pkg/composer 时会自动安装")
    }
}

预期输出类似:

text
✅ Packagist API 正常,总包数: 395821
✅ 检测到 Composer: /usr/local/bin/composer

🔧 可选环境变量

Composer Skills 本身不强制任何环境变量,但以下变量会影响底层 Composer 行为(通过 Options.Env 透传给子进程):

变量作用示例
COMPOSER_HOMEComposer 的主目录(缓存、全局配置)/tmp/composer
COMPOSER_CACHE_DIR缓存目录/tmp/composer-cache
COMPOSER_AUTH认证令牌(JSON),免交互{"github-oauth":{"github.com":"xxx"}}
COMPOSER_MEMORY_LIMIT内存限制-1(无限制)
HTTP_PROXY / HTTPS_PROXY出站代理http://127.0.0.1:7890

在 Go 代码里设置:

go
options := composer.DefaultOptions()
options.Env = append(options.Env,
    "COMPOSER_HOME=/tmp/composer",
    "COMPOSER_MEMORY_LIMIT=-1",
)
comp, err := composer.New(options)

私有仓库鉴权

访问私有 VCS / GitHub Packagist 仓库时,推荐用 comp.AddGitHubToken("github.com", "your-token") 而非手写 COMPOSER_AUTH,SDK 会帮你写进 auth.json。

🧪 验证开发环境(可选)

如果你克隆了仓库想跑测试:

bash
git clone https://github.com/scagogogo/composer-skills.git
cd composer-skills
make test           # 运行全部 450+ 测试
make test-coverage  # 生成覆盖率报告
make check          # 格式化 + vet + 测试

🧭 下一步

基于 MIT 许可证发布