使用しているComposerのバージョンは2.7.9です。
コマンド一覧
ラインが引かれるもののみ、サンプルを次で紹介します。
紹介するコマンドのオプションについては、抜粋して紹介します。
コマンド | 説明 | 引数 | オプション |
---|---|---|---|
composer list | コマンド一覧の出力 | 名前空間 | –format, –raw, –short |
composer about | Composerの基本情報を出力 | ||
composer archive | プロジェクトをまとめる(圧縮する) | 作成先ディレクトリパス | –format, –dir, –file, –ignore-filters |
composer audit | 脆弱性診断 | –no-dev, –format, –locked | |
composer browse | 指定したパッケージのURLやリポジトリをブラウザで表示 | パッケージ名 | –homepage, –show |
composer bump | Composerのバージョン更新 | パッケージ名 | –dev-only, –no-dev-only, –dry-run |
composer check-platform-reqs | プラットフォームが要件を満たしているか確認 | –no-dev, –lock | |
composer clear-cache | Composerが保存しているキャッシュをクリア | –gc | |
composer config | Composerの設定値の取得や変更 | 設定値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 diagnose | Composerの設定や環境に問題がないかを診断 | ||
composer dump-autoload | プロジェクトのオートローダーの再作成 | –optimize, –classmap-authoritative, –apcu, –apcu-prefix, –dry-run, –dev, –no-dev, –ignore-platform-req, –ignore-platform-reqs, –strict-psr | |
composer exec | Composerのコマンド実行 | 実行バイナリ 実行バイナリへ渡すオプションや引数 | –list |
composer fund | Composerで使用しているパッケージや依存関係のメンテナーのリンクや情報を表示 | –format | |
composer global | グローバルディレクトリでのコマンドを実行 | 実行コマンド名 実行コマンドへ渡す引数 | |
composer help | 各コマンドの使用方法表示 | コマンド名 | –format, –raw |
composer init | composer.jsonの生成 | —name, –description, –author, –type, –homepage, –require, –require-dev, –stability, –license, –repository, –autoload | |
composer install | composer.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-script | composer.jsonに定義されたスクリプトの実行 | スクリプト名 実行するスクリプトに渡す引数 | –timeout, –dev, –no-dev, –list |
composer search | パッケージの検索 | 検索に使用するキーワード | –only-name. –only-vendor, –type, –format |
composer self-update | Composerのバージョンを更新 | バージョン | –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 update | composer.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 validate | composer.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
このようにcomposerのコマンド一覧とその説明を記載してくれるため、
このコマンドを覚えておけば、とりあえずなんとかなります。
オプション
–raw
簡潔に表示します。
余分な装飾や余白を取り除いて表示するオプションです。
composer list --raw
–format
表示形式を指定します。
txt(デフォルト), json, xml, md
の4種類があります。
1例として、xmlの出力例の一部をサンプルで載せておきます。
composer list --format=xml
composer archive
プロフェクトをまとめます。
composer archive
このようにデフォルトでは、同階層にtarファイルとしてプロジェクトをまとめます。
ファイル名の4e257…..の部分はコミットIDです。
オプション
–format
プロジェクトのまとめ方を指定します。
tar(デフォルト), tar.gz, tar.bz2, zip
を指定できます。
1例としてzipを紹介します。
composer archive --format=zip
–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
このコマンドを、作成したいディレクトリにて実行すると
上記が出力され、最終的に
上記が出力されれば、作成成功です。
- 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を生成します。
以下に、その内容を載せます。
①
始めにプロジェクトのパッケージ名を聞かれます。
命名に使用できる文字には制限があるので、その制限を守って
命名します。
変える必要がない場合は、そのままEnterキーを押します。
変えない場合は、黄色文字のパッケージ名になります。
(今回のサンプルでは、命名規則に違反するハイフンが含まれているため、
変更する必要があります。
tkmt/laravelorojectと入力して進みます。)
②
次にプロジェクトの説明を聞かれます。
特に入れる必要がない場合は、そのままEnterキーを押します。
今回は入れずにいきますが、
このフィールドはcomposer.jsonでは必須なので、
のちに、composer validateにてエラーが出ます。
③
次に次に作者とメールアドレスを聞かれます。
こちらもそのままでいい場合は、Enterキーを押します。
④
次にプロジェクトで許可するパッケージの最小安定性を指定します。
指定できるのは、stable(デフォルト), beta, alpha, dev
です。
値 | 説明 |
---|---|
stable(デフォルト) | 安定版。本番環境に適している。 |
beta | ほぼ完成。リリース予定。小さなバグがある可能性あり。 |
alpha | 開発初期段階。安定性は保証されない。新機能の早期テストが目的。 |
dev | 開発中。不安定。最新機能を試したい方向け。 |
開発の際に使用する理想は、devです。
が、必ずcomposer.jsonに
"prefer-stable": true
この設定をしておく必要があります。
この設定を入れておくと、
パッケージのstable版が存在する場合は、そちらを優先し、
ない場合はdevを使用することになります。
⑤
次に作成するパッケージのタイプを選択します。
library(デフォルト), project
などが指定でき、用途によって指定を変えます。
今回はプロジェクトを作成したいため、projectを指定します。
⑥
次にこのコードがどのように使用されるかを示す、ライセンス情報を指定します。
ライセンスは、MIT, GPL-3.0, Apache-2.0, BSD-3-Clause, proprietary
などがあります。
値 | 使用例 | 使用言語 |
---|---|---|
MIT | React, Ruby on Rails, jQuery | React, Ruby, Javascript, Python, PHP |
GPL-3.0 | Linux Kernel, GIMP, WordPress | C, Python, PHP |
Apache-2.0 | Apache HTTP Server, TensorFlow, Hadoop | C, Python, Java |
BSD-3-Clause | FreeBSD, NetBSD, OpenCV | C, C++, Python |
proprietary | Microsoft Windows, Adobe Photoshop, Oracle Database | C++, PL/SQL, Java |
今回はMITを指定します。
(Laravelのプロジェクトを作成するため。LaravelではMITを指定する。)
⑦
次にプロジェクトの依存関係を対話的に追加するかを指定します。
yesと入力し、Enterを押すと
このように尋ねられるので、追加したいパッケージを入力していきます。
今回はlaravel/laravelを追加します。
すべて完了したら、空欄でEnterを押すと終了し次の質問にいきます。
⑧
次に開発専用の依存パッケージを対話形式で追加するかを指定します。
開発専門の依存パッケージにはPHPの単体テストフレームワークの
phpunitなどがあります。
ここでyesと入力すると、
前回の質問と同様のコマンドが出るので、
何か追加する場合は、ここに入力して追加します。
今回は何も追加しません。
⑨
次にcomposerのPSR-4オートロードマッピングの設定をするかどうかを指定します。
これは、名前空間にプロジェクト名を指定した場合に、srcディレクトリ配下のPHPファイルを
参照する設定です。
Laravelのプロジェクトでは一般的に
設定をするため、src/と入力します。
⑩
次に作成確認をされるので、yesと入力します。
⑪
次に、依存関係を今インストールするかを尋ねられます。
yesと入力します。
すると、このようなインストール画面が出力され、
最後のほうにこのような画面が出力され、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形式など |
–autoload | PSR-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
実行すると、
このようにインストール画面になり、
最後のほうにこのような画面が出て、依存関係のインストールが完了します。
もし、インストール済みの場合は、
このようにインストールするものがありませんと出ます。
オプション
–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
上記を実行すると、
パッケージ名を聞かれるので、更新するパッケージ名を指定します。
最後に更新確認をされるので、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
実行すると、以下のようにエラーが出ます。
ここには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
その後、もう一度validateを実行します。
composer validate
エラーが解消されたので特に何も表示されず、
正常であることが確認できます。