Skip to main content
この記事はlaravel/cpxのREADME.mdとUPGRADE.mdに基づく情報です。v2.0.0(2026年7月24日リリース)時点の内容です。

cpxとは

cpx は、Composerパッケージに含まれるコマンドをインストールせずに実行できるツールです。npmにおけるnpxのComposer版と考えると分かりやすいです。
内部的にはパッケージを分離ディレクトリにインストールして実行するため、プロジェクトやグローバルのComposer依存関係と衝突しません。2回目以降の実行は同じインストール済みパッケージを再利用するため高速です。

なぜ必要か

composer global require で個別ツールをインストールする方法には以下の課題があります。
  • グローバル依存関係同士が競合する(nikic/php-parsersymfony/consoleなど共通依存を使うツールで発生しやすい)
  • 同じツールの異なるバージョンをプロジェクトごとに切り替えたい
  • 長期運用時にグローバルパッケージの更新を忘れる
  • 一度しか使わないツールをグローバルインストールしたくない
cpx自体はPHARとして自己完結しており、ランタイムのComposer依存を持たないため、グローバルインストールしても競合の原因になりません。

v2.0での全面リライト

cpxは v2.0 で全面的に書き直され、自己完結型のPHARとして配布されるようになりました。基本的な使い方(cpx <package-name> <command> [arguments])や ~/.cpx キャッシュディレクトリはそのまま維持されています。1.xは開発が凍結されており、バグ修正・セキュリティ修正を含め今後のリリースはありません。 アップグレードはグローバルインストールし直すだけです。
v2.0はPHP 8.3以上が必要です。

v2.0の新機能

ローカルバイナリの優先実行

npxと同様に、プロジェクトに既にインストールされているバイナリがあれば、分離コピーをインストールする前にそちらを優先して実行します。カレントディレクトリから上に遡って最も近いComposerプロジェクトを探し、vendor/bin(デフォルトのbin-dir)内の一致するバイナリを実行します。
分離コピーを強制したい場合は --skip-local を使います。

ローカルパッケージディレクトリの直接実行

開発中のComposerパッケージのディレクトリを直接指定して、そのバイナリを実行できます。
対象ディレクトリには有効な composer.json が必要で、依存関係は事前に vendor/autoload.php にインストールされている必要があります。cpxはこの場合、Composerの実行やパッケージのコピー・キャッシュを行いません。

cpx exec と cpx tinker

PHPコードを素早く実行する複数の方法が用意されています。 Laravelプロジェクト内では cpx exec がconfig・facade・.envを含めてフルにアプリケーションをブート($appが使用可能)し、cpx tinker はプロジェクト自身の php artisan tinker を実行します(laravel/tinkerがインストールされている場合)。それ以外の場所ではPsySHシェルが起動します。 スクリプト内では cpx_require('vendor/package')(1.xのcomposer_require()から改名)でパッケージをその場でオートロードできます。

エイリアス機能

長いパッケージ名を覚えなくて済むよう、独自のショートカットを定義できます。
1.xに組み込まれていたポピュラーパッケージ向けのビルトインエイリアス一覧は廃止されたため、必要なら自分で定義する必要があります。

非対話モードとJSON出力

cpxはlaravel/agent-detectorによるAIエージェント検出、標準入力のリダイレクト、--no-interaction/-n フラグから非対話環境を自動検出します。非対話モードでは、installedaliasesaliasunaliascleanupdate などcpx自身の管理コマンドが整形テキストの代わりに1行のJSONを返します。対話端末からでも --json を渡せば同じ出力を得られます。

v1.xからの主な変更点(コマンド)

関連ページ

~/.cpxディレクトリのキャッシュや旧バージョンパッケージは自動的に新形式へ移行されますが、バージョン制約付きで実行していたパッケージは新しいディレクトリ名で管理されるため初回のみ再インストールされます。不要になった1.x時代のコピーは cpx clean で削除できます。

laravel/cpx リポジトリ

ソースコードと最新のREADMEはこちら。

cpx 2.0 アップグレードガイド

1.xから2.xへの詳細な移行手順。
最終更新日 2026年7月30日