rollerworks/monolith-versions 问题修复 & 功能扩展

解决BUG、新增功能、兼容多环境部署,快速响应你的开发需求

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

rollerworks/monolith-versions

最新稳定版本:v0.1.0

Composer 安装命令:

composer require rollerworks/monolith-versions

包简介

Composer plug-in to enforce all versions for the same packages of a monolith versioned distribution.

README 文档

README

This Composer plugin enforces all to-be-installed packages of a monolith versioned distribution to have the same version.

This library is in early development, use at your own risk!

Note

This will only work with monolith versioned distributions.

Only packages that would be normally installed are enforced to have the same version. Packages that are not installed are not enforced.

For example, if you have a monolith versioned distribution with the following packages:

  • rollerworks/search
  • rollerworks/search-doctrine-dbal
  • rollerworks/search-doctrine-orm
  • rollerworks/search-elasticsearch
  • rollerworks/search-bundle

All the rollerworks/search-* packages should have the same version to ensure proper compatibility between them. While Composer always installs the latest possible version of a package, you might want to ensure all packages are the same version.

Possible scenarios where this is useful:

You want to test that all packages are compatible

The rollerworks-search-doctrine-orm package also installs the rollerworks/search-doctrine-dbal package, which depends on doctrine/dbal. When the doctrine/dbal is not compatible with the latest version of the rollerworks/search-doctrine-dbal package, an older version of the rollerworks/search-doctrine-dbal package will be installed. Which would go unnoticed.

Testing with --prefer-lowest

When testing with --prefer-lowest you don't want to add all sub-packages to the require section, yet you want to ensure the packages are the same version.

Usage

Before installing the plugin, make sure you have the latest version of Composer installed.

Enabling the plugin

Because plugins are disabled by default, you need to enable this plugin before usage.

composer config --no-plugins allow-plugins.rollerworks/monolith-versions true

Install the plugin:

composer require lifthill/composer-monolith-version

Configuring the plugin

Add the following to your composer.json file (in the extra section):

{
    "extra": {
        "monolith-versions": {
            "monolith-package-name": {
                "package": "vendor/package-pattern",
                "constraint": "^2.1"
            }
        }
    }
}

For example:

{
    "extra": {
        "monolith-versions": {
            "rollersearch": {
                "pattern": "rollerworks/search-*",
                "constraint": "^2.1",
                "exclude": [
                    "rollerworks/search-testing"
                ]
            }
        }
    }
}

Each entry in the monolith-versions array is a monolith configuration, where the key is the name of the monolith and the value is an array with the following keys:

  1. package (required) – The pattern to match the package names against (multiple patterns are allowed using an array).
  2. constraint (required) – The constraint to enforce on the matched packages (same as in require).
  3. exclude (optional) – An array of package names to exclude.

A package name can contain a wildcard (search-*, *search, *), or a expand pattern ({core, doctrine-dbal}).

Please take note of the following limitations:

  • A monolith name can only consist of [a-z] characters, numbers and dashes, and must start an [a-z] character, and contain no consecutive dashes (--).

  • Conflicting patterns are ignored with a warning (only the first matching pattern is used).

  • A vendor name cannot contain a wildcard (* or expands pattern {rollerworks,symfony}).

    Use an array for multiple patterns instead.

  • Only a single wildcard (*) or expands pattern is allowed in the package name.

  • A package name (not the vendor) can contain a wildcard (search-*, *search, *), or a expand pattern ({core, doctrine-dbal}).

  • The exclude key currently doesn't support patterns, only full names.

Override constraints using environment variables

If you want to override the constraint for a specific monolith (for example to test a specific version), you can use an environment variable (per configuration) to override the constraint.

Environment Variable Effect
COMPOSER_MONOLITH_ROLLERWORKS_SEARCH Overrides the constraint for the rollerworks-search monolith.
COMPOSER_MONOLITH_ROLLERWORKS_SEARCH_DOCTRINE_DBAL Overrides the constraint for the rollerworks-search-doctrine-dbal monolith.

This is best used for testing purposes.

COMPOSER_MONOLITH_ROLLERWORKS_SEARCH="^2.1" composer update

Or in a CI environment:

export COMPOSER_MONOLITH_ROLLERWORKS_SEARCH="^2.1"

composer update

Conflicts when using --with

Using the --with option of the composer update command might not work as expected when a lower version is required than the monolith constraint allows.

Use an environment variable to override the constraint with a more permissive value to resolve this issue.

Like COMPOSER_MONOLITH_ROLLERWORKS_SEARCH="^2.0" composer update --with rollerworks/search:2.1.

Contributing

This is an open source project. If you'd like to contribute, please read the Contributing Guidelines. If you're submitting a pull request, please follow the guidelines in the Submitting a Patch section.

About Us

This library is brought to you by Sebastiaan Stok (@sstok) and supported by [contributors][9].

统计信息

  • 总下载量: 2
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 0
  • 点击次数: 4
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 0
  • Watchers: 0
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2026-02-03

承接程序开发

PHP开发

VUE

Vue开发

前端开发

小程序开发

公众号开发

系统定制

数据库设计

云部署

网站建设

安全加固