Skip to content

✍️ WriteComposerJSON

ComposerJSON 结构体序列化为带缩进的 JSON,写回工作目录下的 composer.json 文件。

何时使用

当通过代码修改了 composer.json 的结构体字段(例如直接编辑 RequireScripts 等映射),需要将改动持久化到磁盘文件时使用。该方法通常与 ReadComposerJSON 配合:先读、改内存对象、再写回。

签名

go
func (c *Composer) WriteComposerJSON(composerJSON *ComposerJSON) error

参数

参数类型说明
composerJSON*ComposerJSON要写入的 composer.json 结构体指针

返回值

  • error:序列化失败或文件写入失败时返回错误;成功时为 nil

示例

go
package main

import (
	"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.Fatal(err)
	}

	// 修改项目描述
	data.Description = "一个更棒的 PHP 库"

	if err := comp.WriteComposerJSON(data); err != nil {
		log.Fatalf("写入 composer.json 失败: %v", err)
	}
}

进阶

  • 📝 写入时使用 json.MarshalIndent 并以 4 个空格缩进,文件权限为 0644
  • ⚠️ 该方法会整体覆盖 composer.json,未在结构体中映射的自定义字段会丢失。需要保留未知字段时建议直接操作原始文件或使用更宽松的 map[string]interface{}
  • 🔗 常见的写入封装见 AddRequireRemoveRequireAddScriptSetProperty

基于 MIT 许可证发布