🔒 LockPackageVersion
将指定包锁定为精确版本。等价于以 ExactVersion 约束调用 UpdatePackageVersion,会通过 require 命令把版本写回 composer.json。
何时使用
当需要保证某依赖在任何环境都安装同一版本(如发布前的可重复构建)时使用。锁定后会得到形如 1.2.3 的精确约束,而非 ^1.2.3。
签名
go
func (c *Composer) LockPackageVersion(packageName string, version string) error参数
| 参数 | 类型 | 说明 |
|---|---|---|
packageName | string | 包名,例如 symfony/console |
version | string | 要锁定的精确版本,例如 5.4.0 |
返回值
| 返回值 | 类型 | 说明 |
|---|---|---|
| 唯一返回值 | error | 执行 require 或写回失败时返回 |
示例
go
package main
import (
"fmt"
"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.LockPackageVersion("symfony/console", "5.4.0"); err != nil {
log.Fatalf("锁定版本失败: %v", err)
}
fmt.Println("symfony/console 已锁定到 5.4.0")
}进阶
- 本方法是 UpdatePackageVersion 传入
ExactVersion的快捷方式。 - 想要其他约束形式(
^、~、范围、通配符)请使用 UpdatePackageVersion。 - 约束格式化逻辑见 FormatVersionConstraint。