PHPackages                             hichemtab-tech/pomposer - 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. hichemtab-tech/pomposer

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

hichemtab-tech/pomposer
=======================

A smarter Composer wrapper for global caching, shared dependencies, and efficient package management across PHP projects.

0.1.0(10mo ago)23101[5 PRs](https://github.com/HichemTab-tech/pomposer/pulls)MITPHPPHP ^8.2CI passing

Since Jul 7Pushed 6mo agoCompare

[ Source](https://github.com/HichemTab-tech/pomposer)[ Packagist](https://packagist.org/packages/hichemtab-tech/pomposer)[ Fund](https://www.buymeacoffee.com/hichemtabtech)[ GitHub Sponsors](https://github.com/hichemtab-tech)[ RSS](/packages/hichemtab-tech-pomposer/feed)WikiDiscussions master Synced 1mo ago

READMEChangelog (1)Dependencies (11)Versions (7)Used By (0)

Pomposer - Shared Package Manager for PHP (pnpm-style for PHP)
==============================================================

[](#pomposer---shared-package-manager-for-php-pnpm-style-for-php)

A proof-of-concept package manager for PHP that installs dependencies once and shares them globally across projects to save space and boost speed. Inspired by pnpm, Pomposer avoids duplication by linking packages instead of reinstalling them for every project. [![Pomposer logo](meta/pomposer.png "Pomposer logo")](meta/pomposer.png)

Why Pomposer?
-------------

[](#why-pomposer)

Composer is the backbone of modern PHP development, but it's not optimized for shared storage. Every `composer install` duplicates packages per project, eating up disk space and time.

**Pomposer** brings the best of `pnpm` to PHP:

- 📦 **Global Package Store**: Each package version is downloaded and stored *only once*.
- ⚡ **Faster Installs**: Once a package is in the global store, installs are nearly instant.
- ⚙️ **Advanced Autoloader**: Generates a complete, optimized autoloader (PSR-4, classmap, files).
- 🤝 **Framework Compatibility**: Creates the necessary manifests (`installed.json`, etc.) for features like Laravel's package auto-discovery.
- 📜 **Script Execution**: Correctly runs `post-install-cmd` and `post-autoload-dump` scripts.

---

How It Works
------------

[](#how-it-works)

1. **Read `composer.lock`** (or falls back to `composer.json` with its own resolver).
2. **Download and cache packages** to the global store at `~/.pomposer-store`.
3. **Read the full `composer.json` from within each package** to gather all metadata (autoloading rules, scripts, and framework providers).
4. **Generate a complete vendor directory**, including:
    - An optimized classmap and PSR-4 autoloader pointing to the global store.
    - The full package manifest (`installed.json`, `installed.php`, etc.) for framework compatibility.
    - Compatibility stubs for Composer's internal classes.
5. **Execute post-install scripts** to finalize the installation (e.g., `php artisan package:discover`).

---

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

[](#installation)

You can install Pomposer globally or locally via Composer:

```
composer global require hichemtab-tech/pomposer
```

Make sure Composer global bin is in your `$PATH`. Then run:

```
pomposer install
```

---

Example 1: Build a small Project with Pomposer
----------------------------------------------

[](#example-1-build-a-small-project-with-pomposer)

Let’s test Pomposer using a simple PHP app that:

- Uses `monolog/monolog` for logging
- Uses your custom package `hichemtab-tech/namecrement`
- Has its own PSR-4 autoloading

---

### 1. Create your test project

[](#1-create-your-test-project)

```
mkdir test-pomposer && cd test-pomposer
```

### 2. Create a `composer.json`:

[](#2-create-a-composerjson)

```
{
  "name": "hichemtab-tech/test-pomposer",
  "autoload": {
    "psr-4": {
      "HichemTabTech\\TestPomposer\\": "src/"
    }
  },
  "authors": [
    {
      "name": "HichemTab-tech",
      "email": "konanhichemsinshi@gmail.com"
    }
  ],
  "require": {
    "hichemtab-tech/namecrement": "^1.1",
    "monolog/monolog": "^3.9"
  }
}
```

### 3. Create your source and test files

[](#3-create-your-source-and-test-files)

```
mkdir src
touch src/index.php
```

Then edit `src/index.php`:

```
