🔄 UpdatePackageVersion
更新项目中对某个包的版本约束。先按约束类型格式化版本字符串,再通过 require 命令写回 composer.json。
何时使用
当需要批量调整依赖版本约束(例如从 ^1.2 切换到 ~1.2 或精确锁定)时使用。它内部调用 RequirePackage,因此会触发实际的依赖解析与安装。
签名
go
func (c *Composer) UpdatePackageVersion(packageName string, version string, constraintType VersionConstraint) error参数
| 参数 | 类型 | 说明 |
|---|---|---|
packageName | string | 包名,例如 symfony/console |
version | string | 版本基础值,例如 1.2.3 |
constraintType | VersionConstraint | 约束类型:ExactVersion、CaretVersion、TildeVersion、RangeVersion、WildcardVersion |
返回值
| 返回值 | 类型 | 说明 |
|---|---|---|
| 唯一返回值 | error | 格式化或执行 require 失败时返回 |
示例
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)
}
// 将 symfony/console 约束改为 ^5.4.0
if err := comp.UpdatePackageVersion(
"symfony/console",
"5.4.0",
composer.CaretVersion,
); err != nil {
log.Fatalf("更新版本约束失败: %v", err)
}
}进阶
- 约束字符串的拼装由 FormatVersionConstraint 完成,可单独调用预览结果。
- 需要把包固定到精确版本时可直接使用 LockPackageVersion。
- 查询包的可用版本列表可用 GetPackageVersions(位于
version_constraints.go)。