soyuka / pmu
PHP 单仓库工具
Requires
- composer-plugin-api: ^2.0
Requires (Dev)
- composer/composer: ^2.7
- friendsofphp/php-cs-fixer: ^3.50
- phpstan/phpstan: ^1.10
- phpunit/phpunit: ^11.0
- symfony/var-dumper: ^7.0
This package is auto-updated.
Last update: 2024-09-05 20:34:41 UTC
README
PMU 是一个用于 PHP 单仓库管理的 Composer 插件。
安装
composer require --dev soyuka/pmu
composer global require --dev soyuka/pmu # ability to link projects globally
配置
{ "name": "test/monorepo", // Specify the projects that are part of your monorepository "extra": { "pmu": { "projects": ["./packages/*/composer.json"] } }, "config": { "allow-plugins": { "soyuka/pmu": true } } }
注意,当从基本 composer.json 文件运行命令时,repositories 会传播到每个项目。一个例子在 tests/monorepo 目录中。
命令
在单个项目上运行命令
composer [project-name] [args]
例如: composer test/a install。
在所有项目上运行命令
composer all install
在所有项目上运行 composer install。
例如,更改分支别名
composer all config extra.branch-alias.dev-main 3.3.x-dev -vvv
混合依赖
将根 composer.json 的约束混合到每个项目中。
composer blend [--dev] [--all] [--self] [project-name]
注意:此命令没有 dry 模式,使用 VCS 在不希望更改的情况下回滚。
当 project-a 依赖于 dependency-a:^2.0.0 且您的根项目具有 dependency-a:^3.0.0 时,运行 composer blend 将在 project-a 中设置 dependency-a 的要求为 ^3.0.0。
我们不检查依赖是否有效,您可能需要在运行此命令后运行 composer all validate 或 composer all update。
Blend 还可以传输任何 json 路径
composer blend --json-path=extra.branch-alias.dev-main --force
其中 force 即使值不在项目的 composer.json 中也会写入。
当您想提升所有单仓库的依赖项并忽略其余部分时,请使用 --self,这与 --all 选项结合使用非常有用。在 API Platform 上,我们使用此选项来对单仓库中的每个依赖项进行对齐(例如,将每个版本设置为根 composer.json 中定义的版本)
composer blend --all --self
运行依赖图
composer graph [project-name]
示例: composer graph test/a 以查看 test/a 项目的依赖项。
检查依赖项
此脚本读取代码并检测 use 类。然后检查每个项目的 require 或 require-dev 中是否正确映射了依赖项。
composer check-dependencies
链接
要链接项目的单仓库依赖项,请使用 composer link。这将在每个项目的 path 上创建一个临时的 composer 定义,
- 配置了每个项目的存储库
- 添加一个
@dev约束以强制 composer 运行本地符号链接 - 运行
composer update - 将定义还原到之前的状态(我们建议在设置版本控制系统后运行此命令)
您可以在全局安装上运行此命令以将目录链接到当前项目
composer global link ../the-mono-repository --working-directory=$(pwd)
待办事项
- 创建
affected图来能够在受影响的项目上运行测试
