soyuka / pmu

PHP 单仓库工具

维护者

详细信息

github.com/soyuka/pmu

源代码

问题

安装次数: 215,920

依赖者: 3

建议者: 0

安全性: 0

星标: 27

关注者: 4

分支: 1

开放问题: 1

类型:composer-plugin

v0.0.12 2024-09-02 20:51 UTC

README

PHP Monorepository Utility

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 validatecomposer 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 类。然后检查每个项目的 requirerequire-dev 中是否正确映射了依赖项。

composer check-dependencies

链接

要链接项目的单仓库依赖项,请使用 composer link。这将在每个项目的 path 上创建一个临时的 composer 定义,

  • 配置了每个项目的存储库
  • 添加一个 @dev 约束以强制 composer 运行本地符号链接
  • 运行 composer update
  • 将定义还原到之前的状态(我们建议在设置版本控制系统后运行此命令)

您可以在全局安装上运行此命令以将目录链接到当前项目

composer global link ../the-mono-repository --working-directory=$(pwd)

待办事项

  • 创建 affected 图来能够在受影响的项目上运行测试