PR

【Laravel】Composerコマンド一覧とサンプル

この記事は約25分で読めます。
composer一覧アイキャッチ

使用しているComposerのバージョンは2.7.9です。

広告

コマンド一覧

広告

ラインが引かれるもののみ、サンプルを次で紹介します。
紹介するコマンドのオプションについては、抜粋して紹介します。

コマンド説明引数オプション
composer listコマンド一覧の出力名前空間–format, –raw, –short
composer aboutComposerの基本情報を出力
composer archiveプロジェクトをまとめる(圧縮する)作成先ディレクトリパス–format, –dir, –file, –ignore-filters
composer audit脆弱性診断–no-dev, –format, –locked
composer browse指定したパッケージのURLやリポジトリをブラウザで表示パッケージ名–homepage, –show
composer bumpComposerのバージョン更新パッケージ名–dev-only, –no-dev-only, –dry-run
composer check-platform-reqsプラットフォームが要件を満たしているか確認–no-dev, –lock
composer clear-cacheComposerが保存しているキャッシュをクリア–gc
composer configComposerの設定値の取得や変更設定値key
設定値value
–global, –editor, –auth, –unset, –list, –file, –absolute, –json, –merge, –append, –source
composer create-projectプロジェクトの生成パッケージ名
生成ディレクトリ
バージョン
–stability, –prefer-source, –prefer-dist, –prefer-install, –repository, –repository-url, –add-repository, –dev, –no-dev, –no-custom-installers, –no-scripts, –no-progress, –no-secure-http, –keep-vcs, –remove-vcs, –no-install, –no-audit, –audit-format, –ignore-platform-req, –ignore-platform-reqs, –ask
composer depends依存しているパッケージの確認パッケージ名–recursive, –tree, –locked
composer diagnoseComposerの設定や環境に問題がないかを診断
composer dump-autoloadプロジェクトのオートローダーの再作成–optimize, –classmap-authoritative, –apcu, –apcu-prefix, –dry-run, –dev, –no-dev, –ignore-platform-req, –ignore-platform-reqs, –strict-psr
composer execComposerのコマンド実行実行バイナリ
実行バイナリへ渡すオプションや引数
–list
composer fundComposerで使用しているパッケージや依存関係のメンテナーのリンクや情報を表示–format
composer globalグローバルディレクトリでのコマンドを実行実行コマンド名
実行コマンドへ渡す引数
composer help各コマンドの使用方法表示コマンド名–format, –raw
composer initcomposer.jsonの生成—name, –description, –author, –type, –homepage, –require, –require-dev, –stability, –license, –repository, –autoload
composer installcomposer.jsonやcomposer.lockに基づいてパッケージをインストールパッケージ名–prefer-source, –prefer-dist, –prefer-install, –dry-run, –download-only, –dev, –no-suggest, –no-dev, –no-autoloader, –no-progress, –no-install, –audit, –audit-format, –optimize-autoloader, –classmap-authoritative, –apcu-autoloader, –apcu-autoloader-prefix, –ignore-platform-req, –ignore-platform-reqs
composer licensesプロジェクトの依存関係に関するライセンス情報の取得–format, –no-dev
composer outdated依存パッケージのアップデート確認パッケージ名–outdated, –all, –locked, –direct, –strict, –major-only, –minor-only, –patch-only, –sort-by-age, –format, –ignore, –no-dev, –ignore-platform-req, –ignore-platform-reqs
composer prohibits依存関係の競合調査パッケージ名
バージョン
–recursive, –tree, –locked
composer reinstall特定の依存パッケージの再インストールパッケージ名–prefer-source, –prefer-dist, prefer-install, –no-autoloader, –no-progress, –optimize-autoloader, –classmap-authoritative, –apcu-autoloader, –apcu-autoloader-prefix, –ignore-platform-req, ignore-platform-reqs
composer removeプロジェクトから不要になったパッケージを除去するパッケージ名–dev, –dry-run, –no-progress, –no-update, –no-install, –no-audit, –audit-format, –update-no-dev, –update-with-dependencies, –update-with-all-dependencies, –with-all-dependencies, –no-update-with-dependencies, –minimal-changes, –unused, –ignore-platform-req, –ignore-platform-reqs, –optimize-autoloader, –classmap-authoritative, –apcu-autoloader, –apcu-autoloader-prefix
composer requireプロジェクトにパッケージを追加パッケージ名–dev, –dry-run, –prefer-source, –prefer-dist, prefer-install, –fixed, –no-suggest, –no-progress, –no-update, –no-install, –no-audit, audit-format, –update-no-dev, –update-with-dependencies, –update-with-all-dependencies, –with-dependencies, –with-all-dependencies, –ignore-platform-req, –ignore-platform-reqs, –prefer-stable, –prefer-lowest, –minimal-changes, –sort-packages, –optimize-autoloader, –classmap-authoritative, –apcu-autoloader, –apcu-autoloader-prefix
composer run-scriptcomposer.jsonに定義されたスクリプトの実行スクリプト名
実行するスクリプトに渡す引数
–timeout, –dev, –no-dev, –list
composer searchパッケージの検索検索に使用するキーワード–only-name. –only-vendor, –type, –format
composer self-updateComposerのバージョンを更新バージョン–rollback, –clean-backups, –no-progress, –update-keys, –stable, –preview, –snapshot, –1, –2, –2.2, –set-channel-only
composer show依存パッケージの詳細情報の表示パッケージ名
バージョン
–all, –locked, –installed, –platform, –available, –self, –name-only, –path, –tree, –latest, –outdated, –ignore, –major-only, –minor-only, –patch-only, –sort-by-age, –direct, –strict, –format, –no-dev, ignore-platform-req, –ignore-platform-reqs
composer status現在のパッケージの状態とcomposer.jsonファイルの不一致を確認
composer suggestsインストール済みのパッケージが推奨する追加パッケージ一覧を表示パッケージ名–by-package, –by-suggestion, –all, –list, –no-dev
composer updatecomposer.jsonを基に依存パッケージを更新し、composer.lockに反映パッケージ名–with, –prefer-source, –prefer-dist, –prefer-install, –dry-run, –dev, –no-dev, –lock, –no-install, –no-audit, -audit-format, –no-autoloader, –no-suggest, –no-progress, –with-dependencies, –with-all-dependencies, –optimize-autoloader, –classmap-authoritative, –apcu-autoloader, –apcu-autoloader-prefix, –ignore-platform-req, ignore-platform-reqs, –prefer-stable, –prefer-lowest, –minimal-changes, –interactive, –root-reqs
composer validatecomposer.jsonのファイル構文や内容が正しいかを検証composer.jsonファイルパス–no-check-all, –check-lock, –no-check-lock, –no-check-publish, –no-check-version, –with-dependencies, –strict

サンプル

広告

composer list

composerのコマンドを一覧で表示します。
これを覚えていれば、とりあえずなんとかなります。

composer list
composerList

このようにcomposerのコマンド一覧とその説明を記載してくれるため、
このコマンドを覚えておけば、とりあえずなんとかなります。

オプション

–raw

簡潔に表示します。
余分な装飾や余白を取り除いて表示するオプションです。

composer list --raw
composer list --raw
–format

表示形式を指定します。

txt(デフォルト), json, xml, md
の4種類があります。

1例として、xmlの出力例の一部をサンプルで載せておきます。

composer list --format=xml
composer list --format=xml

composer archive

プロフェクトをまとめます。

composer archive
composer archive

このようにデフォルトでは、同階層にtarファイルとしてプロジェクトをまとめます。

ファイル名の4e257…..の部分はコミットIDです。

オプション

–format

プロジェクトのまとめ方を指定します。

tar(デフォルト), tar.gz, tar.bz2, zip
を指定できます。

1例としてzipを紹介します。

composer archive --format=zip
composer archive --format
–dir

プロジェクトの保存先を指定します。

今回は保存先を同階層にarchivesフォルダを作成し、
その中に保存するコマンドを以下にサンプルで示します。

composer archive --dir=./archives
–file

保存するファイル名を指定します。

今回は、archiveというファイル名で保存するサンプルを
以下で示します。

composer archive --file=archive

これで同階層にarchive.tarというファイル名にて
プロジェクトがまとまります。

–ignore-filters

.gitignoreや.gitattributesの設定に関係なく
すべてのファイルをまとめます。

composer archive --ignore-filters

composer create-project

プロジェクトを生成します。

第一引数にパッケージ名、第二引数に作成先ディレクトリを渡します。
この2つは必須です。

パッケージ名には、laravel/laravel, symfony/skeleton, phpunit/phpunit
など様々あります。

今回は、Laravelのプロジェクトを作成するサンプルです。

composer create-project laravel/laravel ./laravelProject

このコマンドを、作成したいディレクトリにて実行すると

composer create-prodect

上記が出力され、最終的に

composer create-project

上記が出力されれば、作成成功です。

  • laravelProject
    • app/
    • bootstrap/
    • config/
    • database/
    • public/
    • resources/
    • routes/
    • storage/
    • tests/
    • vendor/
    • .editorconfig
    • .env
    • .env.example
    • .gitattributes
    • .gitignore
    • composer.json
    • composer.lock
    • package.json
    • phpunit.xml
    • postcss.config.js
    • README.md
    • tailwind.config.js
    • wite.config.js

のようなプロジェクトが生成されているはずです。

composer init

composer.jsonを生成します。
もし生成されていた場合は、再生成します。

composer init

これを実行すると、いくつか質問され、
composer.jsonを生成します。

以下に、その内容を載せます。

composer init 1

始めにプロジェクトのパッケージ名を聞かれます。

命名に使用できる文字には制限があるので、その制限を守って
命名します。

変える必要がない場合は、そのままEnterキーを押します。
変えない場合は、黄色文字のパッケージ名になります。
(今回のサンプルでは、命名規則に違反するハイフンが含まれているため、
変更する必要があります。
tkmt/laravelorojectと入力して進みます。)

composer init 2

次にプロジェクトの説明を聞かれます。

特に入れる必要がない場合は、そのままEnterキーを押します。

今回は入れずにいきますが、
このフィールドはcomposer.jsonでは必須なので、
のちに、composer validateにてエラーが出ます。

composer init 3

次に次に作者とメールアドレスを聞かれます。

こちらもそのままでいい場合は、Enterキーを押します。

composer init4

次にプロジェクトで許可するパッケージの最小安定性を指定します。

指定できるのは、stable(デフォルト), beta, alpha, dev
です。

説明
stable(デフォルト)安定版。本番環境に適している。
betaほぼ完成。リリース予定。小さなバグがある可能性あり。
alpha開発初期段階。安定性は保証されない。新機能の早期テストが目的。
dev開発中。不安定。最新機能を試したい方向け。

開発の際に使用する理想は、devです。
が、必ずcomposer.jsonに

"prefer-stable": true

この設定をしておく必要があります。

この設定を入れておくと、
パッケージのstable版が存在する場合は、そちらを優先し、
ない場合はdevを使用することになります。

composer init 5

次に作成するパッケージのタイプを選択します。

library(デフォルト), project
などが指定でき、用途によって指定を変えます。

今回はプロジェクトを作成したいため、projectを指定します。

composer init 6

次にこのコードがどのように使用されるかを示す、ライセンス情報を指定します。

ライセンスは、MIT, GPL-3.0, Apache-2.0, BSD-3-Clause, proprietary
などがあります。

使用例使用言語
MITReact, Ruby on Rails, jQueryReact, Ruby, Javascript, Python, PHP
GPL-3.0Linux Kernel, GIMP, WordPressC, Python, PHP
Apache-2.0Apache HTTP Server, TensorFlow, HadoopC, Python, Java
BSD-3-ClauseFreeBSD, NetBSD, OpenCVC, C++, Python
proprietaryMicrosoft Windows, Adobe Photoshop, Oracle DatabaseC++, PL/SQL, Java

今回はMITを指定します。
(Laravelのプロジェクトを作成するため。LaravelではMITを指定する。)

composer init 7

次にプロジェクトの依存関係を対話的に追加するかを指定します。

yesと入力し、Enterを押すと

composer init 8

このように尋ねられるので、追加したいパッケージを入力していきます。
今回はlaravel/laravelを追加します。

すべて完了したら、空欄でEnterを押すと終了し次の質問にいきます。

composer init 9

次に開発専用の依存パッケージを対話形式で追加するかを指定します。

開発専門の依存パッケージにはPHPの単体テストフレームワークの
phpunitなどがあります。

ここでyesと入力すると、

composer init 8

前回の質問と同様のコマンドが出るので、
何か追加する場合は、ここに入力して追加します。

今回は何も追加しません。

composer init 10

次にcomposerのPSR-4オートロードマッピングの設定をするかどうかを指定します。

これは、名前空間にプロジェクト名を指定した場合に、srcディレクトリ配下のPHPファイルを
参照する設定です。

Laravelのプロジェクトでは一般的に
設定をするため、src/と入力します。

composer init 11

次に作成確認をされるので、yesと入力します。

composer init 12

次に、依存関係を今インストールするかを尋ねられます。

yesと入力します。

composer init 13

すると、このようなインストール画面が出力され、

composer init 14

最後のほうにこのような画面が出力され、composer.jsonが作成されます。

作成されたファイル

{
    "name": "tkmt/laravelproject",
    "type": "project",
    "require": {
        "laravel/laravel": "12.x-dev"
    },
    "license": "MIT",
    "autoload": {
        "psr-4": {
            "Tkmt\\Laravelproject\\": "src/"
        }
    },
    "authors": [
        {
            "name": "author", //ここは変更しています
            "email": "email" //ここは変更しています
        }
    ],
    "minimum-stability": "dev"
}

19行目の

"minimum-stability": "dev"

の次の行に

"prefer-stable": true

を忘れずに追加しましょう。

オプション

composer initのオプションは複数ありますが、
基本すべて、コマンド実行後に尋ねられる内容を
はじめから設定しておくためのオプションです。

オプション説明
–nameパッケージ名を指定。Package name (<vendor>/<name>) の部分
–descriptionパッケージの説明を記述。Description []: の部分
–author作者の名前とメールアドレス。Author …, n to skip]: の部分
–typeパッケージの種類を指定。Package Type (e.g. library, project, metapackage, composer-plugin)[]: の部分
–homepageプロジェクトのホームページURLを指定。GitHubや公式サイトなど
–require本番環境で必要な依存パッケージを追加。Would you like to define your dependencies (require) interactively [yes]? の部分
–require-dev開発環境で必要な依存パッケージ追加。Would you like to define your dependencies (require-dev) interactively [yes]? の部分
–stability最小の安定性を指定。Minimum Stability[]: の部分
–license使用するライセンスを指定。License[]: の部分
–repositoryカスタムリポジトリの追加。URLやJSON形式など
–autoloadPSR-4準拠のオートロード設定を追加。Add PSR-4 autoload mapping? … [src/, n to skip]: の部分

ちなみに、前の部分で作成したcomposer.jsonを作成するオプションとしては、

composer init --name="tkmt/laravelproject" --type="project" --require="laravel/laravel:12.x-dev" --license="MIT" --author="author <email>" --autoload="psr-4:Tkmt\\Laravelproject\\ src/" --stability="dev"

上記のようになります。

上記のコマンドを実行したら、ほとんどの質問はEnterキーを押すだけで大丈夫です。

composer install

プロジェクトの依存関係をインストールするためのコマンドです。

composer install

実行すると、

composer install 1

このようにインストール画面になり、

composer install 2

最後のほうにこのような画面が出て、依存関係のインストールが完了します。

もし、インストール済みの場合は、

composer install 3

このようにインストールするものがありませんと出ます。

オプション

–no-dev

require-devのパッケージをスキップして、
依存関係をインストールします。

本番環境向け。

–optimize-autoloader

クラスマップを生成し、オートローダーのパフォーマンスを向上させる。

PSR-4は都度、ディレクトリをスキャンし、クラスを検索しますが、
クラスマップを使用することで、都度検索する必要がなくなり、
パフォーマンスが上がります。

composer install --optimize-autoloader

上記コマンドを実施すると、

vendor/composer/autoload_classmap.php

が作成され、クラスマップが作成されます。

–classmap-authoritative

クラスのオートロードをクラスマップに完全依存させます。

–optimize-autoloaderを実行し、PSR-4を無効にします。

それによって、パフォーマンスの向上が図れたり、
クラスの探索ミスを防げるため、予期しないエラーのリスクが減ります。

–apcu-autoloader

APCu(APC User Cache)を使用して、クラスのオートロードを高速化するオプションです。

オートロード情報をAPCuキャッシュに保存し、クラスの読み込みを高速化します。

–apcu-autoloader-prefix

キャッシュの競合を防ぐため、キャッシュデータに接頭辞をつけるオプションです。

composer install --apcu-autoloader-prefix="プレフィックス名"

composer update

プロジェクトの依存関係を最新に更新します。

composer update

サンプル画像での説明やオプション説明などは、
composer installとほぼ同じになるものに関しては割愛します。

オプション

–prefer-lowest

可能な限り最も低いバージョンの依存関係をインストールします。

composer update --prefer-lowest
–minimal-changes

依存関係に最小限の変更を適用するオプション。

できるだけ少ない変更を行うことで、プロジェクト全体の安定性を維持します。

composer update --minimal-changes
–interactive

パッケージの更新を対話形式で行います。

composer update --interactive

上記を実行すると、

composer update interactive

パッケージ名を聞かれるので、更新するパッケージ名を指定します。

composer interactive 2

最後に更新確認をされるので、yesと入力したら更新作業が始まります。

composer validate

composer.jsonの内容と構文が正しいかを確認します。

今回は以下のcomposer.jsonをチェックします。

{
    "name": "tkmt/laravelproject",
    "type": "project",
    "require": {
        "laravel/laravel": "12.x-dev"
    },
    "license": "MIT",
    "autoload": {
        "psr-4": {
            "Tkmt\\Laravelproject\\": "src/"
        }
    },
    "authors": [
        {
            "name": "author",
            "email": "email"
        }
    ],
    "minimum-stability": "dev"
}

※サンプルのcomposer initで作成されたcomposer.jsonをそのまま使用しています。

composer validate

実行すると、以下のようにエラーが出ます。

composer validate

ここには2つのエラーが記載されております。

1つは、descriprionフィールド(プロジェクトの説明)がないこと、
もう一つは、laravelの厳密なバージョン指定がしてあることです。

厳密なバージョン指定を避ける理由は、
バージョンの自動アップデートが困難になり、依存関係が最新でないため、
問題が発生する可能性が出てくるためです。

以下のように変更します。

{
    "name": "tkmt/laravelproject",
    "description": "Laravelのプロジェクトです",
    "type": "project",
    "require": {
        "laravel/laravel": "^12.0"
    },
    "license": "MIT",
    "autoload": {
        "psr-4": {
            "Tkmt\\Laravelproject\\": "src/"
        }
    },
    "authors": [
        {
            "name": "author",
            "email": "email"
        }
    ],
    "minimum-stability": "dev"
}

composer.lockを更新するため、composer updateを実行します。

composer update
composer update

その後、もう一度validateを実行します。

composer validate
composer validate 2

エラーが解消されたので特に何も表示されず、
正常であることが確認できます。


広告
タイトルとURLをコピーしました