➕ RequireMultiple
批量添加多个包依赖,等价于 composer require [--dev] pkg1:ver1 pkg2:ver2 ...。
何时使用
- 📦 一次引入一组相关的包,避免多次执行
composer require触发重复依赖解析。 - 🧪 初始化项目脚手架时批量写入依赖。
- ⚡ 提升批量操作效率(单次解析、单次更新锁文件)。
签名
go
func (c *Composer) RequireMultiple(packages map[string]string, dev bool) error定义位置
该方法定义在 pkg/composer/additional_methods.go,而非 packages.go。
参数
| 参数 | 类型 | 说明 |
|---|---|---|
packages | map[string]string | 包名到版本约束的映射,例如 {"symfony/console": "^5.0"};版本为空字符串则用最新版 |
dev | bool | true 作为开发依赖添加 |
返回值
| 值 | 类型 | 说明 |
|---|---|---|
| 错误 | error | 添加包过程中发生错误时返回 |
示例
go
package main
import (
"log"
"github.com/scagogogo/composer-skills/pkg/composer"
)
func main() {
comp, err := composer.New(composer.DefaultOptions())
if err != nil {
log.Fatalf("初始化失败: %v", err)
}
// 批量添加生产依赖
prodDeps := map[string]string{
"symfony/console": "^5.0",
"symfony/process": "^5.0",
}
if err := comp.RequireMultiple(prodDeps, false); err != nil {
log.Fatalf("批量添加生产依赖失败: %v", err)
}
// 批量添加开发依赖
devDeps := map[string]string{
"phpunit/phpunit": "^9.0",
"squizlabs/php_codesniffer": "^3.0",
}
if err := comp.RequireMultiple(devDeps, true); err != nil {
log.Fatalf("批量添加开发依赖失败: %v", err)
}
}进阶
单个添加
只需添加一个包用 RequirePackage,需要附加选项用 RequirePackageWithOptions。
批量移除
对应的批量移除用 RemoveMultiple。
健康检查式批量
health_check.go 提供了 BatchRequire(packages, dev, continueOnError),返回 *BatchRequireResult,可在部分失败时继续并汇总结果,适合需要容错的批量场景。
🔍 相关方法
RequirePackage:单个添加。RemoveMultiple:批量移除。