Skip to content

➕ RequirePackage

Adds a new dependency package to the project, equivalent to composer require [--dev] package/name:version.

When to use

  • 🆕 Introduce a new dependency to the project (production or development).
  • 🔒 Lock a specific version constraint, e.g. ^5.0.
  • 🧪 Combine with RequireDryRun to preview before the real addition.

Signature

go
func (c *Composer) RequirePackage(packageName string, version string, dev bool) error

Parameters

ParameterTypeDescription
packageNamestringThe name of the package to add, e.g. symfony/console
versionstringVersion constraint, e.g. ^5.0; pass an empty string to use the latest version
devbooltrue to add as a development dependency (require-dev)

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)
    }

    // Add a production dependency
    if err := comp.RequirePackage("symfony/console", "^5.0", false); err != nil {
        log.Fatalf("add production dependency failed: %v", err)
    }

    // Add a development dependency
    if err := comp.RequirePackage("phpunit/phpunit", "^9.0", true); err != nil {
        log.Fatalf("add development dependency failed: %v", err)
    }
}

Advanced

RequirePackageWithOptions

Use this when you need to attach flags such as --prefer-source or --no-update:

go
func (c *Composer) RequirePackageWithOptions(packageName, version string, options map[string]string) error

options is an options map; pass an empty string for valueless flags.

Batch add

To add multiple packages at once, use RequireMultiple (additional_methods.go), avoiding the repeated dependency resolution that comes from running composer require multiple times.

Released under the MIT License