可通过path仓库依赖本地包实现复用,如在主项目composer.json中添加path类型仓库并require对应包,确保本地包有正确name;不推荐使用已弃用的merge插件;建议通过脚本生成、monorepo或提取公共依赖为私有包来共享配置。
Composer 不支持直接在
中“引用”另一个本地的
文件像导入配置那样。但你可以通过以下方式实现类似效果,比如复用依赖或配置。
使用 Composer 的 Path Repositories(推荐)
如果你希望主项目依赖一个本地的 Composer 包(它有自己的composer.json),可以通过类型的仓库来实现。
在主项目的
中添加:
确保本地包()的中定义了正确的和或启用了以支持开发模式。
共享配置或依赖:使用 Composer Merge Plugin(已弃用,不推荐)
过去有人用来合并多个文件,但它已被官方标记为弃用,且存在性能和兼容性问题。
目前没有广泛维护的“合并配置”插件。不建议用于新项目。
PHP 8.5.5
PHP 8.5.5 是 PHP 8.5 分支的维护更新版本。该版本延续了“小步快跑”的迭代逻辑,通过深度错误修复、底层性能微调以及安全加固,旨在为开发者提供一个更健壮、更高效的运行环境。该版本严格遵守语义化版本规范,不包含破坏性变更。
下载
替代方案:脚本化生成或继承结构
如果目标是复用依赖列表或配置项,可考虑:
编写脚本(如 PHP、Node.js 或 shell)动态生成多个项目的
使用 monorepo 结构,通过一个根
管理多个包
将公共依赖提取成私有包,通过
或私有 Satis/Squirrel 仓库引入
总结
不能直接“引用”另一个,但可通过仓库让项目依赖本地包。若想复用配置,应采用工程化手段而非试图合并文件。
基本上就这些。Composer 的设计是基于包管理,不是配置继承。合理拆分包结构比强行合并更可持续。
composer.jsoncomposer.jsonpathcomposer.json{
"repositories": [
{
"type": "path",
"url": "../my-local-package"
}
],
"require": {
"my/package": "*"
}
}
../my-local-packagecomposer.jsonnameversionpreferred-install: sourcewikimedia/composer-merge-plugincomposer.jsoncomposer.jsoncomposer.jsonpathcomposer.jsonpath