Composerについてのメモです。
ComposerはPHPパッケージ管理ツールです。
composer.pharを(カレントディレクトリ)へダウンロードします。
$ curl -sS https://getcomposer.org/installer | php
コマンドを実行できます(例はバージョンの確認)。
$ php /path/to/composer.phar --version
composer.pharへ実行権限を付与します。
$ chmod u+x composer.phar
composer.pharを直接実行できるようになります。
$ /path/to/composer.phar --version
パスの通っているディレクトリへ移動します(例 /usr/local/bin
)。
どのディレクトリでも下記コマンドで実行できます。
$ composer.phar --version
簡略化のためcomposer.pharをcomposerへリネームします。
$ composer --version
$ composer self-update
$ composer init
対話的にcomposer.jsonを作成できます。
composer.jsonの例
{
"require": {
"monolog/monolog": "1.0.*"
}
}
installコマンドでパッケージをインストールします。
$ composer install
composer installは下記処理を行います。
パッケージをアップデートします。
$ composer update
# 特定のパッケージだけアップデート
$ composer update foo/bar
特定バージョンだけをアップデートする場合は、composer.jsonのバージョンの範囲で最新のものに更新されます。
つまりcomposer.jsonに指定した範囲で最新のものがダウンロード・インストールされます。
指定された以外のパッケージはcomposer.lockに指定されているバージョンがダウンロードされます。
(指定以外のバージョンはダウンロードされたないと考えましたが、composer.logを見ると指定されたバージョン(=既存バージョン)をダウンロードし直しているよう?)
$ composer update {{package_name}}
を実行composer.lockファイルが存在するときの挙動が異なります。
composer install と composer updateの違い - Qiita
// 通常パッケージを追加
$ composer require {{package name}}
composer require
はパッケージを追加して、composer.json
(のrequire
プロパティ)へ追記します。
// 開発でのみ必要なパッケージを追加
$ composer require --dev packagename
composer require –devは開発環境でのみ必要なパッケージを追加します。
パッケージを追加しcomposer.json(のrequire-dev)へ追記します。
composer installではインストールされず–devオプションを付けてcomposer install –devでインストールされます。
install/updateコマンドの--devオプションのデフォルト値は有効なので--devは付けなくてもrequire-devパッケージもインストール/アップデートします。
require-devパッケージをインストール/アップデートしないときは明示的に--no-devオプションを指定します。
新規追加パッケージ以外は、composer.lock
を変更しないようにパッケージを追加。
foo/bar
パッケージを追加)$ composer update foo/bar
$ composer update foo/bar:^1.1
$ composer update foo/bar
デフォルトはcomposer.jsonと同階層にvendor
ディレクトリを作成します。
上述のcomposer.jsonの例では下記のようになります。
vendor/monolog/monolog
|-- composer.json
|
|-- composer.lock
|
|-- vendor
|
|--monolog
|
|--monolog
$ composer show -i
required
したパッケージのみ表示。
$ composer show -D
[初心者向け] composerのバージョン指定方法 | QUARTETCOM TECH BLOG
Composerの設定は、composer config
コマンドで行う。
Basic認証を設定する方法は下記のとおり。
$ composer config -g http-basic.example.com foo bar
上記コマンドを実行すると~/.composer/auth.json
ファイルが作成される。
{
// ...
"http-basic": {
"example.com": {
"username": "foo",
"password": "bar"
}}
}
Personal Access Tokenは以下のページから生成できます。
$ composer config -g github-oauth.github.com <oauthtoken>
Personal Access Tokenが必要な理由は下記ブログでわかりやすく解説されています。
Composerを利用してGithubへ短時間で大量のリクエストを送ると、Github APIに対するアクセス回数制限に引っかかる場合があります。このような場合、Composerがgithub認証のために、ユーザIDとパスワードを要求します。要求通りID/パスワード入力すればユーザ認証が行われ、回数制限の上限が緩和されるので処理が先に進みます。
ですが、共有のPCを使っているときなど、IDやパスワードを直接入力したくない場合があります。このような場合は、githubから取得出来るOAuthトークンを利用すると良いです。 --[PHP]composer使用時、GitHubのAPI rate limitを回避するためにOAuthトークンを使う - akamist blog
https://akamist.com/blog/archives/215
Composerに限らず大量のリクエストを送るアプリケーション(例えばHomebrewなど)でも Personal Access Tokenを登録する必要があります。詳しくはgitを参照ください。
--no-script
$ composer install --no-script
公式リファレンス Personal API tokens
create-project
もバージョン指定可能。
composer create-project koriym/php-skeleton:1.1.5 salesforce-rest-api-client
以下が発生。
symfony flex 1.2.7 Plugin installation failed (Invalid version string "5.x")
下記手順で解消。
vendor
ディレクトリを削除ローカル
のcomposer.lockを削除ローカル
で$ composer install
composer.lock
をコミットしてPush