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
图来能够在受影响的项目上运行测试