✍️ WriteComposerJSON
将 ComposerJSON 结构体序列化为带缩进的 JSON,写回工作目录下的 composer.json 文件。
何时使用
当通过代码修改了 composer.json 的结构体字段(例如直接编辑 Require、Scripts 等映射),需要将改动持久化到磁盘文件时使用。该方法通常与 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{}。 - 🔗 常见的写入封装见
AddRequire、RemoveRequire、AddScript、SetProperty。