Skip to content

📄 ReadComposerJSON

读取并解析工作目录下的 composer.json 文件,返回结构化的 ComposerJSON 对象。

何时使用

需要在代码中读取项目的 composer.json 配置(项目名、依赖、脚本、自动加载等)进行查询或修改时使用。该方法也是 AddRequireSetProperty 等写入方法的基础——它们内部会先调用本方法读取现有配置。

签名

go
func (c *Composer) ReadComposerJSON() (*ComposerJSON, error)

参数

参数类型说明
方法直接读取 Composer 的工作目录(SetWorkingDir 设定,未设则用 os.Getwd())下的 composer.json

返回值

  • *ComposerJSON:解析后的 composer.json 结构体指针,包含 NameRequireRequireDevScriptsAutoload 等全部字段。
  • 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 写回磁盘。

基于 MIT 许可证发布