🗑️ BatchRemove
批量移除多个 Composer 依赖包,支持遇错继续与开发依赖标记。
何时使用
清理一组不再使用的包、重构依赖结构或在脚本中一次性卸载多个包时使用。
签名
go
func (c *Composer) BatchRemove(packages []string, dev bool, continueOnError bool) (*BatchRemoveResult, error)参数
| 参数 | 类型 | 说明 |
|---|---|---|
packages | []string | 要移除的包名列表 |
dev | bool | 是否从 require-dev 开发依赖中移除 |
continueOnError | bool | 遇到错误是否继续移除后续包;为 false 时遇首个错误即停止 |
返回值
*BatchRemoveResult:批量移除结果,含逐包结果与计数error:第一个遇到的错误(仅当continueOnError为false时返回,否则为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
- 单包移除可使用
Remove或RemoveWithOptions(见 packages.go)