Skip to content

🗑️ BatchRemove

批量移除多个 Composer 依赖包,支持遇错继续与开发依赖标记。

何时使用

清理一组不再使用的包、重构依赖结构或在脚本中一次性卸载多个包时使用。

签名

go
func (c *Composer) BatchRemove(packages []string, dev bool, continueOnError bool) (*BatchRemoveResult, error)

参数

参数类型说明
packages[]string要移除的包名列表
devbool是否从 require-dev 开发依赖中移除
continueOnErrorbool遇到错误是否继续移除后续包;为 false 时遇首个错误即停止

返回值

  • *BatchRemoveResult:批量移除结果,含逐包结果与计数
  • error:第一个遇到的错误(仅当 continueOnErrorfalse 时返回,否则为 nil
go
type BatchRemoveResult struct {
    Results      []RemoveResult `json:"results,omitempty"`
    SuccessCount int            `json:"success_count"`
    FailCount    int            `json:"fail_count"`
    TotalCount   int            `json:"total_count"`
}

示例

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

    packages := []string{"monolog/monolog", "psr/log", "symfony/console"}

    result, err := comp.BatchRemove(packages, false, true)
    if err != nil {
        log.Printf("部分移除失败: %v", err)
    }
    fmt.Printf("成功: %d, 失败: %d, 总计: %d\n",
        result.SuccessCount, result.FailCount, result.TotalCount)
}

进阶

  • 该方法逐包调用 Remove,失败信息写入对应 RemoveResult.Warnings
  • 若需保证一致性,设 continueOnError=false 并检查 error
  • 对应的添加操作见 BatchRequire
  • 单包移除可使用 RemoveRemoveWithOptions(见 packages.go)

基于 MIT 许可证发布