Skip to content

➕ RequireMultiple

Adds multiple package dependencies in batch, equivalent to composer require [--dev] pkg1:ver1 pkg2:ver2 ....

When to use

  • 📦 Introduce a group of related packages at once, avoiding repeated dependency resolution triggered by running composer require multiple times.
  • 🧪 Batch write dependencies when initializing a project scaffold.
  • ⚡ Improve batch operation efficiency (single resolution, single lock file update).

Signature

go
func (c *Composer) RequireMultiple(packages map[string]string, dev bool) error

Definition location

This method is defined in pkg/composer/additional_methods.go, not in packages.go.

Parameters

ParameterTypeDescription
packagesmap[string]stringMapping of package name to version constraint, e.g. {"symfony/console": "^5.0"}; an empty version string uses the latest
devbooltrue to add as a development dependency

Return value

ValueTypeDescription
ErrorerrorReturned when an error occurs during package addition

Example

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("init failed: %v", err)
    }

    // Batch add production dependencies
    prodDeps := map[string]string{
        "symfony/console": "^5.0",
        "symfony/process": "^5.0",
    }
    if err := comp.RequireMultiple(prodDeps, false); err != nil {
        log.Fatalf("batch add production dependencies failed: %v", err)
    }

    // Batch add development dependencies
    devDeps := map[string]string{
        "phpunit/phpunit":             "^9.0",
        "squizlabs/php_codesniffer":   "^3.0",
    }
    if err := comp.RequireMultiple(devDeps, true); err != nil {
        log.Fatalf("batch add development dependencies failed: %v", err)
    }
}

Advanced

Single add

To add only one package, use RequirePackage; to attach options, use RequirePackageWithOptions.

Batch removal

The corresponding batch removal is RemoveMultiple.

Health-check-style batch

health_check.go provides BatchRequire(packages, dev, continueOnError), returning *BatchRequireResult. It can continue on partial failures and aggregate results, suitable for batch scenarios that need fault tolerance.

Released under the MIT License