Skip to content

📦 RequirePackageWithOptions 带自定义选项添加包依赖

🔍 RequirePackageWithOptions 向项目添加一个新的依赖包,并支持传入额外选项(如 --dev--prefer-source--no-update),相当于执行 composer require [options] packageName:version

📋 签名

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

📥 参数

参数类型说明
packageNamestring要添加的包名,例如 symfony/console
versionstring版本约束,例如 ^5.0;传空字符串 "" 表示使用最新版本
optionsmap[string]string额外选项映射,键为选项名、值为选项值;值为空字符串 "" 表示无值开关型选项

📤 返回值

返回值类型说明
第一个返回值error添加过程中发生错误时返回,成功时为 nil

📝 示例

go
package main

import (
	"log"

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

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

	// 添加开发依赖并指定多个选项
	options := map[string]string{
		"dev":          "",
		"prefer-source": "",
		"no-update":    "",
	}
	if err := comp.RequirePackageWithOptions("phpunit/phpunit", "^9.0", options); err != nil {
		log.Fatalf("添加依赖失败: %v", err)
	}
	log.Println("依赖添加完成")
}

🚀 进阶

  • 📋 若无需额外选项,使用更简洁的 RequirePackage(packageName, version, dev);其中 dev 布尔值等价于在 options 中加入 "dev": ""
  • 🧪 搭配 "dry-run": "" 可在不修改 composer.json 的前提下预演添加结果,等价于 RequireDryRun 但选项更灵活。
  • ⚙️ 常用选项:dev(开发依赖)、prefer-source/prefer-dist(安装来源)、no-update(仅改 json 不解析依赖)、ignore-platform-reqs(忽略平台要求)。
  • 🔗 底层通过 buildOptionsArgs(options) 将 map 展开为命令行参数,再拼接 package:version 后调用 c.Run("require", ...);map 遍历顺序不影响最终命令构造的确定性。

基于 MIT 许可证发布