📈 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) errorgo
options := map[string]string{
"dev-only": "",
"prefer-stable": "",
"dry-run": "",
}
err := comp.BumpPackagesWithOptions([]string{"symfony/console"}, options)bump 与 update 的区别
bump 只在约束范围内拉到最新,不改变 composer.json 的版本约束;update 会重新解析依赖并可能更新传递依赖。想严格控制在约束内升级时用 bump。
🔍 相关方法
OutdatedPackages:先查看哪些包可升级。GetOutdatedInfo:结构化的可升级清单。