Skip to content

📈 BumpPackages

将指定的包升级到符合其在 composer.json 中版本约束的最新版本,等价于 composer bump package1 package2 ...

何时使用

  • ⬆️ 在不修改版本约束的前提下,把依赖拉到约束允许的最新版。
  • 🧹 清理 composer.lock 中陈旧的版本记录。
  • 🔄 升级流程的第一步,先 bump 再视情况放宽约束。

签名

go
func (c *Composer) BumpPackages(packages []string) error

参数

参数类型说明
packages[]string要升级的包名列表;传空切片则升级所有包

返回值

类型说明
错误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)
    }

    // 升级多个包
    if err := comp.BumpPackages([]string{"symfony/console", "symfony/process"}); err != nil {
        log.Fatalf("升级包失败: %v", err)
    }

    // 传空切片升级所有包
    if err := comp.BumpPackages([]string{}); err != nil {
        log.Fatalf("升级所有包失败: %v", err)
    }
}

进阶

BumpPackagesWithOptions

需要附加 --dry-run--dev-only--prefer-stable 等标志时使用:

go
func (c *Composer) BumpPackagesWithOptions(packages []string, options map[string]string) error
go
options := map[string]string{
    "dev-only":      "",
    "prefer-stable": "",
    "dry-run":       "",
}
err := comp.BumpPackagesWithOptions([]string{"symfony/console"}, options)

bump 与 update 的区别

bump 只在约束范围内拉到最新,不改变 composer.json 的版本约束;update 会重新解析依赖并可能更新传递依赖。想严格控制在约束内升级时用 bump

🔍 相关方法

基于 MIT 许可证发布