Deprecated: imwpcache\f884414bce24ee67f\f73723ec7b1919fa5::__construct(): Implicitly marking parameter $YECBGYFECGEAFWHA as nullable is deprecated, the explicit nullable type must be used instead in /www/wwwroot/www.chuangxiangniao.com/wp-content/plugins/imwpcache-dist/build/f884414bce24ee67ff73723ec7b1919fa5.php on line 2

Deprecated: imwpcache\f884414bce24ee67f\f73723ec7b1919fa5::__construct(): Implicitly marking parameter $BBWFDDBHHYHDXXAB as nullable is deprecated, the explicit nullable type must be used instead in /www/wwwroot/www.chuangxiangniao.com/wp-content/plugins/imwpcache-dist/build/f884414bce24ee67ff73723ec7b1919fa5.php on line 2
如何使用composer管理一个包含多个子应用的Monorepo项目?_创想鸟

如何使用composer管理一个包含多个子应用的Monorepo项目?

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

如何使用composer管理一个包含多个子应用的monorepo项目?

在 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

每个子应用都应有自己的 composer.json,明确声明其依赖和自动加载规则。

设置正确的 type,如 library、project 等定义 autoload 规则,如 psr-4 映射命名空间在 require 或 require-dev 中列出所需依赖

例如 backend-api/composer.json:

{    "name": "mycompany/backend-api",    "type": "project",    "require": {        "php": "^8.1",        "slim/slim": "^4.0"    },    "autoload": {        "psr-4": {            "AppBackend": "src/"        }    }}

本地共享包的路径映射

如果多个子应用依赖同一个本地包(如 shared-utils),可通过 path 类型仓库引入。

在子应用的 composer.json 中添加:

实用的企业订单销售管理cms模板 实用的企业订单销售管理cms模板

一套响应式的订单查询,订单收益,订单管理,项目进度管理cms后台模板。适用于手机app订单统计管理后台模板。包含多种ui小组件,和2个主页,总共87个页面html下载。

实用的企业订单销售管理cms模板 437 查看详情 实用的企业订单销售管理cms模板

{    "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中文网其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/786000.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
云上书阁app如何开启护眼模式_云上书阁app保护眼睛阅读设置
上一篇 2025年11月26日 11:50:55
dedejs判断手机号输入
下一篇 2025年11月26日 11:50:56

相关推荐

发表回复

登录后才能评论
关注微信