🧪 RemoveDryRun 模拟移除包
🔍
RemoveDryRun模拟从项目中移除指定依赖包的过程,但不会真正修改composer.json或实际卸载包,相当于执行composer remove --dry-run packageName,适合在执行移除前预览影响。
📋 签名
go
func (c *Composer) RemoveDryRun(packageName string) (string, error)📥 参数
| 参数 | 类型 | 说明 |
|---|---|---|
packageName | string | 要模拟移除的包名,例如 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标准格式以避免歧义。