Skip to content

🚫 WhyNotPackage

解释为什么不能安装指定版本的包,等价于 composer why-not package/name version

何时使用

  • 🐛 升级或锁定版本时遇到冲突,需要定位是哪个约束阻止了安装。
  • 🔍 评估能否引入某个特定版本。
  • 📋 在依赖审查中说明版本选择的根因。

签名

go
func (c *Composer) WhyNotPackage(packageName string, version string) (string, error)

参数

参数类型说明
packageNamestring要查询的包名
versionstring要查询的版本,例如 v4.0.0

返回值

类型说明
输出string解释结果的输出,列出阻止安装的约束链路
错误error查询过程中发生错误时返回

示例

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

    output, err := comp.WhyNotPackage("symfony/console", "v4.0.0")
    if err != nil {
        log.Fatalf("查询版本约束失败: %v", err)
    }
    fmt.Println("无法安装的原因:", output)
}

进阶

WhyNotWithOptions

需要附加选项时使用(additional_methods.go):

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

正向问题

版本格式

version 应使用 Composer 能识别的版本字符串,如 v4.0.0^4.0 等。传入非法格式可能得到难以解读的错误输出。

🔍 相关方法

基于 MIT 许可证发布