> ## Documentation Index
> Fetch the complete documentation index at: https://kawax.biz/llms.txt
> Use this file to discover all available pages before exploring further.

# cpx 2.0 — de Composer Package Executor volledig herschreven

> Een introductie van laravel/cpx: een tool waarmee je Composer-pakketten net als met npx kunt uitvoeren zonder ze te installeren. In v2.0 volledig herschreven als zelfstandige PHAR, met nieuwe functies zoals voorrang voor lokale binaries, Gist-uitvoering en aliassen.

<Info>
  Dit artikel is gebaseerd op de README.md en UPGRADE.md van [laravel/cpx](https://github.com/laravel/cpx). De inhoud betreft v2.0.0 (uitgebracht op 24 juli 2026).
</Info>

## Wat is cpx?

[cpx](https://github.com/laravel/cpx) is een tool waarmee je commando's uit Composer-pakketten kunt uitvoeren zonder ze te installeren. Zie het als de Composer-variant van `npx` bij npm.

```bash theme={null}
composer global require cpx/cpx
cpx friendsofphp/php-cs-fixer fix ./src
```

Intern wordt het pakket geïnstalleerd in een geïsoleerde directory en van daaruit uitgevoerd, zodat het niet botst met de Composer-dependencies van je project of je globale installatie. Vanaf de tweede keer wordt hetzelfde geïnstalleerde pakket hergebruikt, dus dat gaat snel.

## Waarom is dit nodig?

Het installeren van losse tools met `composer global require` kent de volgende problemen.

* Globale dependencies conflicteren met elkaar (dit gebeurt al snel bij tools die gedeelde dependencies zoals `nikic/php-parser` of `symfony/console` gebruiken)
* Je wilt per project tussen verschillende versies van dezelfde tool wisselen
* Bij langdurig gebruik vergeet je globale pakketten bij te werken
* Je wilt een tool die je maar één keer gebruikt niet globaal installeren

cpx zelf is zelfstandig als PHAR en heeft geen Composer-runtimedependencies, dus ook een globale installatie veroorzaakt geen conflicten.

## De volledige herschrijving in v2.0

cpx is in v2.0 volledig herschreven en wordt nu gedistribueerd als **zelfstandige PHAR**. Het basisgebruik (`cpx <package-name> <command> [arguments]`) en de cachedirectory `~/.cpx` zijn behouden. De ontwikkeling van 1.x is bevroren; er komen geen nieuwe releases meer, ook geen bugfixes of beveiligingsfixes.

Upgraden is niets meer dan opnieuw globaal installeren.

```bash theme={null}
composer global require cpx/cpx:^2.0
```

v2.0 vereist PHP 8.3 of hoger.

## Nieuwe functies in v2.0

### Voorrang voor lokale binaries

Net als npx voert cpx, als er al een binary in je project is geïnstalleerd, die met voorrang uit voordat er een geïsoleerde kopie wordt geïnstalleerd. Vanaf de huidige directory zoekt het omhoog naar het dichtstbijzijnde Composer-project en voert het de overeenkomende binary in `vendor/bin` (de standaard `bin-dir`) uit.

```bash theme={null}
cpx pint                 # voert vendor/bin/pint uit als die bestaat
cpx phpunit --filter=Foo # voert vendor/bin/phpunit uit als die bestaat
cpx laravel/pint:^2.0    # gebruikt de lokale versie alleen als de geïnstalleerde versie aan de constraint voldoet
```

Wil je een geïsoleerde kopie forceren, gebruik dan `--skip-local`.

```bash theme={null}
cpx --skip-local laravel/pint --version
```

### Directe uitvoering van een lokale pakketdirectory

Je kunt de directory van een Composer-pakket in ontwikkeling rechtstreeks opgeven en de binary ervan uitvoeren.

```bash theme={null}
cpx /absolute/path/to/package --version
cpx ../path/to/package --version
```

De doeldirectory moet een geldige `composer.json` bevatten en de dependencies moeten vooraf zijn geïnstalleerd in `vendor/autoload.php`. In dit geval voert cpx geen Composer uit en kopieert of cachet het geen pakketten.

### cpx exec en cpx tinker

Er zijn meerdere manieren om snel PHP-code uit te voeren.

| Commando              | Beschrijving                                                 |
| --------------------- | ------------------------------------------------------------ |
| `cpx exec <file.php>` | Voert een PHP-bestand uit (bestandsuitvoering kan alleen zo) |
| `cpx exec -r <code>`  | Voert PHP-code rechtstreeks uit                              |
| `cpx exec <gist url>` | Downloadt een GitHub Gist en voert die uit                   |
| `cpx tinker`          | Opent een interactieve REPL                                  |

Binnen een Laravel-project boot `cpx exec` de applicatie volledig, inclusief config, facades en `.env` (`$app` is beschikbaar), en voert `cpx tinker` de `php artisan tinker` van het project zelf uit (als `laravel/tinker` is geïnstalleerd). Op andere plekken start een PsySH-shell.

Binnen een script kun je met `cpx_require('vendor/package')` (hernoemd van `composer_require()` uit 1.x) een pakket ter plekke autoloaden.

### Aliassen

Om lange pakketnamen niet te hoeven onthouden, kun je eigen shortcuts definiëren.

```bash theme={null}
cpx alias laravel/pint pint
cpx aliases      # lijst van gedefinieerde aliassen
cpx unalias pint # alias verwijderen
```

De ingebouwde aliaslijst voor populaire pakketten uit 1.x is geschrapt; als je die nodig hebt, moet je ze zelf definiëren.

### Niet-interactieve modus en JSON-output

cpx detecteert een niet-interactieve omgeving automatisch via de AI-agentdetectie van [laravel/agent-detector](https://github.com/laravel/agent-detector), redirectie van standaardinvoer en de vlag `--no-interaction`/`-n`. In de niet-interactieve modus retourneren de beheercommando's van cpx zelf — zoals `installed`, `aliases`, `alias`, `unalias`, `clean` en `update` — één regel JSON in plaats van opgemaakte tekst. Ook vanuit een interactieve terminal krijg je dezelfde output door `--json` mee te geven.

## Belangrijkste wijzigingen ten opzichte van v1.x (commando's)

| 1.x                                             | 2.x                                                                              |
| ----------------------------------------------- | -------------------------------------------------------------------------------- |
| `cpx list` (lijst van geïnstalleerde pakketten) | Gewijzigd naar `cpx installed` (`list` toont nu de commandolijst)                |
| Ingebouwde aliaslijst                           | Geschrapt. Definieer ze zelf met `cpx alias`                                     |
| `cpx check` / `cpx format` / `cpx test`         | Geschrapt. Voer rechtstreeks uit met `cpx pint`, `cpx phpstan`, `cpx pest`, enz. |
| `cpx version` / `-v`                            | Geschrapt. Gebruik `cpx --version`                                               |
| `cpx script.php` (directe bestandsuitvoering)   | Geschrapt. `cpx exec script.php` is vereist                                      |
| `composer_require()`                            | Hernoemd naar `cpx_require()`                                                    |

## Gerelateerde pagina's

De cache en pakketten van oude versies in de directory `~/.cpx` worden automatisch gemigreerd naar het nieuwe formaat, maar pakketten die je met een versieconstraint uitvoerde worden onder een nieuwe directorynaam beheerd en worden daarom eenmalig opnieuw geïnstalleerd. Overbodig geworden kopieën uit het 1.x-tijdperk verwijder je met `cpx clean`.

<Card title="laravel/cpx repository" icon="github" href="https://github.com/laravel/cpx">
  De broncode en de nieuwste README vind je hier.
</Card>

<Card title="cpx 2.0-upgradegids" icon="arrow-up" href="https://github.com/laravel/cpx/blob/main/UPGRADE.md">
  Gedetailleerde migratie-instructies van 1.x naar 2.x.
</Card>


## Related topics

- [Versiecompatibiliteit van packages beheren](/nl/advanced/package-versioning.md)
- [De interne structuur van package discovery](/nl/advanced/package-discovery.md)
- [Google Sheets API for Laravel](/nl/packages/laravel-google-sheets/index.md)
- [Amazon Bedrock-driver voor de Laravel AI SDK](/nl/packages/laravel-amazon-bedrock.md)
- [Introductie van Laravel Wayfinder](/nl/blog/wayfinder-introduction.md)
