📄 ReadComposerJSON
读取并解析工作目录下的 composer.json 文件,返回结构化的 ComposerJSON 对象。
何时使用
需要在代码中读取项目的 composer.json 配置(项目名、依赖、脚本、自动加载等)进行查询或修改时使用。该方法也是 AddRequire、SetProperty 等写入方法的基础——它们内部会先调用本方法读取现有配置。
签名
go
func (c *Composer) ReadComposerJSON() (*ComposerJSON, error)参数
| 参数 | 类型 | 说明 |
|---|---|---|
| 无 | — | 方法直接读取 Composer 的工作目录(SetWorkingDir 设定,未设则用 os.Getwd())下的 composer.json |
返回值
*ComposerJSON:解析后的 composer.json 结构体指针,包含Name、Require、RequireDev、Scripts、Autoload等全部字段。error:文件不存在时返回ErrComposerJSONNotFound;JSON 解析失败或读取异常时返回对应错误。
示例
go
package main
import (
"fmt"
"log"
"github.com/scagogogo/composer-skills/pkg/composer"
)
func main() {
comp, err := composer.New(composer.DefaultOptions())
if err != nil {
log.Fatal(err)
}
data, err := comp.ReadComposerJSON()
if err != nil {
log.Fatalf("读取 composer.json 失败: %v", err)
}
fmt.Printf("项目名称: %s\n", data.Name)
fmt.Printf("生产依赖数量: %d\n", len(data.Require))
for pkg, ver := range data.Require {
fmt.Printf(" %s => %s\n", pkg, ver)
}
}进阶
- 🧪 测试时可用
SetMockComposerJSON注入模拟数据,用ClearMockComposerJSON清除,避免依赖真实文件。 - ⚠️ 本方法返回的是
ComposerJSON(结构化强类型);如需更宽松的map[string]interface{}访问,可改用ReadComposerJson(见 convenience.go)。 - ✏️ 修改后请用
WriteComposerJSON写回磁盘。