➕ 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 requiremultiple 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) errorDefinition location
This method is defined in pkg/composer/additional_methods.go, not in packages.go.
Parameters
| Parameter | Type | Description |
|---|---|---|
packages | map[string]string | Mapping of package name to version constraint, e.g. {"symfony/console": "^5.0"}; an empty version string uses the latest |
dev | bool | true to add as a development dependency |
Return value
| Value | Type | Description |
|---|---|---|
| Error | error | Returned 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.
🔍 Related methods
RequirePackage: single add.RemoveMultiple: batch removal.