📦 安装
本页介绍 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 API | pkg/client、pkg/repository | ❌ 不需要 | ❌ 不需要 |
| 🛠️ Composer CLI | pkg/composer | ✅ PHP 7.4+ | ✅ Composer 2.0+ |
公共要求:
- Go 1.23+(
go.mod声明go 1.23.0,toolchain 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_HOME | Composer 的主目录(缓存、全局配置) | /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 + 测试