合理组织目录结构并配置各子项目依赖,通过path类型仓库实现本地包共享,每个子应用独立维护composer.json,根目录可选统一管理开发工具。

在 Monorepo 项目中使用 Composer 管理多个子应用,核心在于合理组织目录结构并配置好每个子项目的依赖关系。Composer 本身不直接支持 Monorepo 模式,但通过灵活的配置可以实现高效管理。
将每个子应用视为独立的包或项目,放在统一的根目录下。例如:
/monorepo-root ├── composer.json # 根级 composer.json(可选) ├── apps/ │ ├── frontend-app/ │ │ └── composer.json │ ├── backend-api/ │ │ └── composer.json │ └── admin-panel/ │ └── composer.json ├── packages/ │ └── shared-utils/ │ └── composer.json └── vendor/ # 全局或各应用各自的 vendor 目录
apps/ 存放可独立运行的应用,packages/ 存放可复用的私有库。这样结构清晰,便于维护。
每个子应用都应有自己的 composer.json,明确声明其依赖和自动加载规则。
例如 backend-api/composer.json:
{
"name": "mycompany/backend-api",
"type": "project",
"require": {
"php": "^8.1",
"slim/slim": "^4.0"
},
"autoload": {
"psr-4": {
"App\Backend\": "src/"
}
}
}
如果多个子应用依赖同一个本地包(如 shared-utils),可通过 path 类型仓库引入。
在子应用的 composer.json 中添加:
一套响应式的订单查询,订单收益,订单管理,项目进度管理cms后台模板。适用于手机app订单统计管理后台模板。包含多种ui小组件,和2个主页,总共87个页面html下载。
437
{
"repositories": [
{
"type": "path",
"url": "../packages/shared-utils"
}
],
"require": {
"mycompany/shared-utils": "*"
}
}
这样 Composer 会软链接(或复制)该包到 vendor,开发时修改即时生效。部署时建议打包发布到私有 Packagist 服务以避免路径问题。
可在根目录放置一个 composer.json 用于集中执行通用命令或安装开发工具。
例如安装 PHPStan、PHPUnit 等全局开发依赖:
{
"require-dev": {
"phpunit/phpunit": "^10",
"phpstan/phpstan": "^1.0"
},
"config": {
"allow-plugins": {
"composer/package-versions-deprecated": true
}
}
}
这类工具可在各个子项目中通过 ./vendor/bin/ 调用,无需重复安装。
基本上就这些。关键点是保持每个子项目独立可运行,通过 path 仓库实现本地依赖共享,结构清晰就能避免混乱。
以上就是如何使用composer管理一个包含多个子应用的Monorepo项目?的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号