Skip to content

➕ 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

参数

参数类型说明
packagesmap[string]string包名到版本约束的映射,例如 {"symfony/console": "^5.0"};版本为空字符串则用最新版
devbooltrue 作为开发依赖添加

返回值

类型说明
错误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,可在部分失败时继续并汇总结果,适合需要容错的批量场景。

🔍 相关方法

基于 MIT 许可证发布