PHPackages                             azteck/composer-workspaces - 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. azteck/composer-workspaces

ActiveComposer-plugin[Utility &amp; Helpers](/categories/utility)

azteck/composer-workspaces
==========================

Gestionnaire de workspaces Composer pour applications modulaires et monorepos PHP

1.1.0(3w ago)011PHP

Since May 16Pushed 3w agoCompare

[ Source](https://github.com/AzTechKonbit/composer-workspaces)[ Packagist](https://packagist.org/packages/azteck/composer-workspaces)[ RSS](/packages/azteck-composer-workspaces/feed)WikiDiscussions main Synced 1w ago

READMEChangelogDependencies (1)Versions (3)Used By (0)

Composer Workspaces
===================

[](#composer-workspaces)

Plugin Composer pour gérer automatiquement les modules dans une architecture modulaire ou monorepo PHP.

Fonctionnalités
---------------

[](#fonctionnalités)

- Découverte automatique des modules dans un ou plusieurs dossiers configurables
- Injection automatique des namespaces PSR-4 (avec support des dossiers en minuscules)
- Installation automatique des dépendances des modules (`composer install`)
- Compatible Laravel Modules (`nwidart/laravel-modules`)
- Compatible monorepo PHP

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

[](#installation)

```
composer require azteck/composer-workspaces
```

Autoriser le plugin dans votre `composer.json` :

```
{
    "config": {
        "allow-plugins": {
            "azteck/composer-workspaces": true
        }
    }
}
```

Configuration
-------------

[](#configuration)

La configuration se fait dans la clé `extra.workspaces.paths` de votre `composer.json` racine.

### Dossier unique

[](#dossier-unique)

```
{
    "extra": {
        "workspaces": {
            "paths": ["Modules"]
        }
    }
}
```

### Plusieurs dossiers

[](#plusieurs-dossiers)

```
{
    "extra": {
        "workspaces": {
            "paths": ["Modules", "MyModules", "Tools", "Extra"]
        }
    }
}
```

### Avec chemin absolu

[](#avec-chemin-absolu)

```
{
    "extra": {
        "workspaces": {
            "paths": ["/opt/shared-modules", "Modules"]
        }
    }
}
```

> Si aucun chemin n'est configuré, le plugin utilise `Modules/` par défaut. Les chemins inexistants sont ignorés silencieusement.

Structure attendue
------------------

[](#structure-attendue)

Chaque sous-dossier d'un chemin configuré est considéré comme un module s'il contient un `composer.json`.

```
project/
├── composer.json
├── Modules/
│   └── Blog/
│       ├── composer.json        ← détecté automatiquement
│       ├── Providers/
│       ├── Http/
│       ├── Models/
│       ├── database/
│       │   ├── seeders/
│       │   └── factories/
│       └── tests/
├── Tools/
│   └── MyTool/
│       └── composer.json        ← détecté automatiquement
└── Extra/                       ← ignoré si absent

```

Configuration PSR-4 d'un module
-------------------------------

[](#configuration-psr-4-dun-module)

Pour les modules dont les dossiers sont en minuscules (ex. `database/seeders/`) mais dont les namespaces utilisent des majuscules (ex. `Database\Seeders\`), déclarez des entrées PSR-4 spécifiques dans le `composer.json` du module :

```
{
    "name": "modules/blog",
    "autoload": {
        "psr-4": {
            "Modules\\Blog\\":                      "",
            "Modules\\Blog\\Database\\Seeders\\":   "database/seeders/",
            "Modules\\Blog\\Database\\Factories\\": "database/factories/"
        }
    },
    "autoload-dev": {
        "psr-4": {
            "Modules\\Blog\\Tests\\": "tests/"
        }
    }
}
```

> La clé `""` correspond à la racine du module. Ainsi `Modules\Blog\Providers\BlogServiceProvider`est résolu vers `Modules/Blog/Providers/BlogServiceProvider.php`.

Fonctionnement
--------------

[](#fonctionnement)

Le plugin se raccroche aux hooks Composer suivants :

HookAction`pre-autoload-dump`Injecte les PSR-4 de tous les modules dans l'autoloader racine`post-install-cmd`Lance `composer install` dans les modules qui ont des dépendances`post-update-cmd`Lance `composer install` dans les modules mis à jour### Output attendu

[](#output-attendu)

```
[Workspaces] Injection des PSR-4...
  PSR-4     [Blog]  Modules\Blog\ → Modules/Blog
  PSR-4     [Blog]  Modules\Blog\Database\Seeders\ → Modules/Blog/database/seeders
  PSR-4 dev [Blog]  Modules\Blog\Tests\ → Modules/Blog/tests
  PSR-4     [MyTool]    Tools\MyTool\ → Tools/MyTool/src
Generated optimized autoload files ✅

```

Exemple `composer.json` complet
-------------------------------

[](#exemple-composerjson-complet)

```
{
    "name": "vendor/my-project",
    "require": {
        "azteck/composer-workspaces": "*"
    },
    "autoload": {
        "psr-4": {
            "App\\": "app/"
        }
    },
    "config": {
        "allow-plugins": {
            "azteck/composer-workspaces": true
        }
    },
    "extra": {
        "workspaces": {
            "paths": ["Modules", "Tools"]
        }
    }
}
```

Licence
-------

[](#licence)

[LICENCE MIT](LICENSE)

###  Health Score

37

—

LowBetter than 81% of packages

Maintenance95

Actively maintained with recent releases

Popularity7

Limited adoption so far

Community8

Small or concentrated contributor base

Maturity34

Early-stage or recently created project

 Bus Factor1

Top contributor holds 50% of commits — single point of failure

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 ~1 days

Total

3

Last Release

22d ago

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/66652301?v=4)[Dupy007](/maintainers/Dupy007)[@Dupy007](https://github.com/Dupy007)

---

Top Contributors

[![Dupy007](https://avatars.githubusercontent.com/u/66652301?v=4)](https://github.com/Dupy007 "Dupy007 (2 commits)")[![JoeDev2a](https://avatars.githubusercontent.com/u/265006923?v=4)](https://github.com/JoeDev2a "JoeDev2a (2 commits)")

### Embed Badge

![Health badge](/badges/azteck-composer-workspaces/health.svg)

```
[![Health](https://phpackages.com/badges/azteck-composer-workspaces/health.svg)](https://phpackages.com/packages/azteck-composer-workspaces)
```

###  Alternatives

[symfony/runtime

Enables decoupling PHP applications from global state

74694.9M933](/packages/symfony-runtime)[ergebnis/composer-normalize

Provides a composer plugin for normalizing composer.json.

1.1k40.0M2.6k](/packages/ergebnis-composer-normalize)[drupal/core-composer-scaffold

A flexible Composer project scaffold builder.

5344.1M525](/packages/drupal-core-composer-scaffold)[drupal/core-project-message

Adds a message after Composer installation.

2124.0M192](/packages/drupal-core-project-message)[sandersander/composer-link

Adds ability to link local packages for development with composer

98441.4k](/packages/sandersander-composer-link)[phpro/grumphp-shim

GrumPHP Phar distribution

284.6M333](/packages/phpro-grumphp-shim)

PHPackages © 2026

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