Skip to content

🧩 AddScript

composer.jsonscripts 段添加一个脚本,可选地附带描述。

何时使用

需要在安装、更新、测试等生命周期钩子上自动执行命令时使用。Composer 脚本可以是单个命令字符串、PHP 回调,或命令数组。本方法只修改配置文件,注册后可用 composer run-script 触发。

签名

go
func (c *Composer) AddScript(name string, script interface{}, description string) error

参数

参数类型说明
namestring脚本名称,例如 post-install-cmd 或自定义名 test
scriptinterface{}脚本内容,可以是 string[]string 或 PHP 回调字符串
descriptionstring脚本描述,可选;非空时写入 scripts-descriptions

返回值

  • error:读取或写入 composer.json 失败时返回错误。

示例

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)
	}

	// 添加单命令脚本(安装后执行)
	if err := comp.AddScript(
		"post-install-cmd",
		"php -r \"echo 'Installation completed!';\"",
		"安装后执行",
	); err != nil {
		log.Fatal(err)
	}

	// 添加多命令脚本
	commands := []string{
		"php -r \"echo 'Starting tests...';\"",
		"phpunit",
	}
	if err := comp.AddScript("test", commands, "运行测试"); err != nil {
		log.Fatal(err)
	}
}

进阶

  • 🔄 内部流程:ReadComposerJSON → 写 Scripts[name] → 可选写 ScriptsDescriptions[name]WriteComposerJSON
  • ⚠️ 若同名脚本已存在会覆盖
  • 🏃 注册后实际运行脚本见 RunScript / ExecuteScript;列出脚本见 ListScripts
  • 🗑️ 对应的移除方法见 RemoveScript

基于 MIT 许可证发布