Skip to content

➖ RemoveMultiple

Removes multiple package dependencies in batch, equivalent to composer remove [--dev] pkg1 pkg2 ....

When to use

  • 🧹 Clean up multiple unused dependencies at once, avoiding repeated dependency resolution triggered by running composer remove multiple times.
  • ♻️ Batch-remove a group of related packages during a refactor.
  • ⚡ Improve batch operation efficiency (single resolution, single lock file update).

Signature

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

Parameters

ParameterTypeDescription
packages[]stringThe list of package names to remove
devbooltrue to remove from development dependencies (require-dev)

Return value

ValueTypeDescription
ErrorerrorReturned when an error occurs during package removal

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 remove production dependencies
    if err := comp.RemoveMultiple(
        []string{"symfony/console", "symfony/process"}, false,
    ); err != nil {
        log.Fatalf("batch remove production dependencies failed: %v", err)
    }

    // Batch remove development dependencies
    if err := comp.RemoveMultiple(
        []string{"phpunit/phpunit", "squizlabs/php_codesniffer"}, true,
    ); err != nil {
        log.Fatalf("batch remove development dependencies failed: %v", err)
    }
}

Advanced

Single removal

To remove only one package, use Remove; to attach options, use RemoveWithOptions.

Batch add

The corresponding batch add is RequireMultiple (which takes a map[string]string to carry versions).

Health-check-style batch

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

Released under the MIT License