➕ AddRequire
向 composer.json 添加一个依赖包,根据 isDev 决定写入 require 或 require-dev 段。
何时使用
需要以编程方式声明项目依赖时使用。相比执行 composer require 命令,本方法只修改 composer.json 文件本身,不触发实际安装,适合批量生成或模板化项目配置。
签名
go
func (c *Composer) AddRequire(packageName, version string, isDev bool) error参数
| 参数 | 类型 | 说明 |
|---|---|---|
packageName | string | 包名,例如 symfony/console |
version | string | 版本约束,例如 ^5.0 |
isDev | bool | true 写入 require-dev,false 写入 require |
返回值
error:读取或写入composer.json失败时返回错误。
示例
go
package main
import (
"log"
"github.com/scagogogo/composer-skills/pkg/composer"
)
func main() {
comp, err := composer.New(composer.DefaultOptions())
if err != nil {
log.Fatal(err)
}
// 添加生产依赖
if err := comp.AddRequire("symfony/console", "^5.0", false); err != nil {
log.Fatal(err)
}
// 添加开发依赖
if err := comp.AddRequire("phpunit/phpunit", "^9.0", true); err != nil {
log.Fatal(err)
}
}进阶
- 🔄 本方法内部流程:
ReadComposerJSON→ 修改映射 →WriteComposerJSON,若对应 map 为nil会自动初始化。 - ⚠️ 若包已存在,会覆盖原版本约束。
- 🚀 如需真正安装依赖到
vendor,改用RequirePackage(执行composer require命令)。批量声明可用RequireMultiple。 - 🗑️ 对应的移除方法见
RemoveRequire。