PHPackages                             spryker-sdk/composer-constrainer - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. spryker-sdk/composer-constrainer

ActiveLibrary[Utility &amp; Helpers](/categories/utility)

spryker-sdk/composer-constrainer
================================

ComposerConstrainer module

0.2.7(2y ago)02.3M↓16.4%4[2 PRs](https://github.com/spryker-sdk/composer-constrainer/pulls)7proprietaryPHPPHP &gt;=7.4

Since Aug 15Pushed 9mo ago14 watchersCompare

[ Source](https://github.com/spryker-sdk/composer-constrainer)[ Packagist](https://packagist.org/packages/spryker-sdk/composer-constrainer)[ RSS](/packages/spryker-sdk-composer-constrainer/feed)WikiDiscussions master Synced 1mo ago

READMEChangelog (10)Dependencies (11)Versions (11)Used By (7)

ComposerConstrainer Module
==========================

[](#composerconstrainer-module)

[![CI](https://github.com/spryker-sdk/composer-constrainer/workflows/CI/badge.svg?branch=master)](https://github.com/spryker-sdk/composer-constrainer/actions?query=workflow%3ACI+branch%3Amaster)[![Latest Stable Version](https://camo.githubusercontent.com/55099743941dfe4d5123ca7248949c734a2481b34eedb91dd2864c62ed359fd4/68747470733a2f2f706f7365722e707567782e6f72672f737072796b65722d73646b2f636f6d706f7365722d636f6e73747261696e65722f762f737461626c652e737667)](https://packagist.org/packages/spryker-sdk/composer-constrainer)[![Minimum PHP Version](https://camo.githubusercontent.com/92fabb75236db7d7453db0680cfab230e4ba78cc321ad3864794f78327f3f3b0/687474703a2f2f696d672e736869656c64732e696f2f62616467652f7068702d253345253344253230372e342d3838393242462e737667)](https://php.net/)[![PHPStan](https://camo.githubusercontent.com/441b5874ce4df0a2defc892979c96c46889b69cb32119d04f0b48626349f8bc9/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f5048505374616e2d656e61626c65642d627269676874677265656e2e7376673f7374796c653d666c6174)](https://github.com/phpstan/phpstan)

Tool to detect extended core modules and to update composer.json constraints from using `^` (caret) to using `~` (tilde) for those extended modules.

### What will be found by this tool

[](#what-will-be-found-by-this-tool)

- Extended API and non-API classes.

### What is ignored by this tool

[](#what-is-ignored-by-this-tool)

- Extended ModuleDependencyProvider.
- Extended ModuleConfig.

Installation
------------

[](#installation)

```
composer require --dev spryker-sdk/composer-constrainer

```

This is a development only "require-dev" module. Please make sure you include it as such.

Add the console command `SprykerSdk\Zed\ComposerConstrainer\Communication\Console\ComposerConstraintConsole` to your `Pyz\Zed\Console\ConsoleDependencyProvider::getConsoleCommands()` stack.

Documentation
-------------

[](#documentation)

[Spryker Documentation](https://docs.spryker.com/)

Spryker OS is modular and follows SemVer. Every BC-breaking change of module API () is considered as a major release. But what happens to non-API? Spryker leverages the ability to change non-API functionality in minor and patch releases. This way Spryker provides new features for different business verticals.

What does it mean for my customized modules?

When you customized Spryker modules (changed module behavior on project level) even minor changes could potentially cause migration efforts. To avoid such cases and keep project updates safe and predictable a project should use `~` (tilde) composer constraint instead of `^` for modules with changed behavior. And to simplify the process Spryker provides a development command `vendor/bin/console code:constraint:modules`, which will suggest required changes in composer.json. It can also auto-adjust your composer.json.

Usage
-----

[](#usage)

### Dry-run the command

[](#dry-run-the-command)

```
vendor/bin/console code:constraint:modules -d

```

With this command no changes will be made to the `composer.json`. Use `-v` to see version details.

The return code of this command is either `0` (success) or `1` (error, some constraints need to be changed).

This is the recommended hook for your CI system.

### Run the command

[](#run-the-command)

```
vendor/bin/console code:constraint:modules

```

This command will change the project's `composer.json`. Please dry-run the command before you apply any changes.

###  Health Score

44

—

FairBetter than 92% of packages

Maintenance41

Moderate activity, may be stable

Popularity41

Moderate usage in the ecosystem

Community31

Small or concentrated contributor base

Maturity55

Maturing project, gaining track record

 Bus Factor2

2 contributors hold 50%+ of commits

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~175 days

Recently: every ~264 days

Total

10

Last Release

887d ago

PHP version history (4 changes)0.1.0PHP &gt;=7.1

0.2.0PHP &gt;=7.2

0.2.2PHP &gt;=7.3

0.2.6PHP &gt;=7.4

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/10738957?v=4)[Spryker Bot](/maintainers/spryker-bot)[@spryker-bot](https://github.com/spryker-bot)

---

Top Contributors

[![dereuromark](https://avatars.githubusercontent.com/u/39854?v=4)](https://github.com/dereuromark "dereuromark (44 commits)")[![gerner-spryker](https://avatars.githubusercontent.com/u/30629375?v=4)](https://github.com/gerner-spryker "gerner-spryker (31 commits)")[![stereomon](https://avatars.githubusercontent.com/u/1382877?v=4)](https://github.com/stereomon "stereomon (26 commits)")[![AsonUnique](https://avatars.githubusercontent.com/u/20453760?v=4)](https://github.com/AsonUnique "AsonUnique (6 commits)")[![Nidhognit](https://avatars.githubusercontent.com/u/13098647?v=4)](https://github.com/Nidhognit "Nidhognit (5 commits)")[![spryker-release-bot](https://avatars.githubusercontent.com/u/26904324?v=4)](https://github.com/spryker-release-bot "spryker-release-bot (3 commits)")[![asaulenko](https://avatars.githubusercontent.com/u/20285714?v=4)](https://github.com/asaulenko "asaulenko (2 commits)")[![romanhavrylko](https://avatars.githubusercontent.com/u/70894038?v=4)](https://github.com/romanhavrylko "romanhavrylko (2 commits)")[![ehsanmx](https://avatars.githubusercontent.com/u/7711957?v=4)](https://github.com/ehsanmx "ehsanmx (1 commits)")[![gechetspr](https://avatars.githubusercontent.com/u/42143273?v=4)](https://github.com/gechetspr "gechetspr (1 commits)")[![limeeugenia](https://avatars.githubusercontent.com/u/25685017?v=4)](https://github.com/limeeugenia "limeeugenia (1 commits)")

###  Code Quality

Static AnalysisPHPStan

Type Coverage Yes

### Embed Badge

![Health badge](/badges/spryker-sdk-composer-constrainer/health.svg)

```
[![Health](https://phpackages.com/badges/spryker-sdk-composer-constrainer/health.svg)](https://phpackages.com/packages/spryker-sdk-composer-constrainer)
```

###  Alternatives

[spryker/search

Search module

152.8M64](/packages/spryker-search)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
