Skip to content

🧪 RemoveDryRun 模拟移除包

🔍 RemoveDryRun 模拟从项目中移除指定依赖包的过程,但不会真正修改 composer.json 或实际卸载包,相当于执行 composer remove --dry-run packageName,适合在执行移除前预览影响。

📋 签名

go
func (c *Composer) RemoveDryRun(packageName string) (string, error)

📥 参数

参数类型说明
packageNamestring要模拟移除的包名,例如 symfony/console

📤 返回值

返回值类型说明
第一个返回值string模拟移除过程的文本输出
第二个返回值error模拟过程中发生错误时返回,成功时为 nil

📝 示例

go
package main

import (
	"fmt"
	"log"

	"github.com/scagogogo/composer-skills/pkg/composer"
)

func main() {
	comp, err := composer.NewComposer()
	if err != nil {
		log.Fatalf("创建 Composer 实例失败: %v", err)
	}

	output, err := comp.RemoveDryRun("symfony/console")
	if err != nil {
		log.Fatalf("模拟移除失败: %v", err)
	}
	fmt.Println("模拟移除结果:")
	fmt.Println(output)
}

🚀 进阶

  • ✅ 预演通过后再用 Remove(packageName, dev) 执行真实移除;如需保留 --dev 标记的判断,请显式传入 dev 参数。
  • 📦 若需模拟批量移除或带自定义选项(如 --no-update),可参考 RemoveWithOptions,并在 options 中加入 "dry-run": "" 实现等价效果。
  • 🧪 在 CI 中先跑 RemoveDryRun 检查是否会破坏依赖图,再决定是否提交移除变更。
  • 🔗 底层调用 c.Run("remove", "--dry-run", packageName),包名建议使用 vendor/package 标准格式以避免歧义。

基于 MIT 许可证发布