Composer は、新世代の PHP 依存関係管理ツールです。その概要と基本的な使用方法については、この「PHP 依存関係管理ツール Composer の入門チュートリアル」を参照してください。この記事では、PHP 開発の利便性を高めるために、Composer を使用するための 5 つのヒントを紹介します。
1. 単一のライブラリのみを更新します
特定のライブラリのみを更新し、そのすべての依存関係を更新したくない場合は、簡単です:
composer update foo/bar
さらに、このトリックは「」の問題を解決するためにも使用できます。警告メッセージの問題」。次のような警告メッセージを見たことがあるはずです:
Warning: The lock file is not up to date with the latest changes in composer.json, you may be getting outdated dependencies, run update to update them.
ru、何が問題でしたか?慌てないで! Composer.json を編集すると、次のように表示されるはずです。たとえば、ライブラリの説明、作成者、その他のパラメータ、または単なるスペースなどの詳細を追加または更新すると、ファイルの md5sum が変更されます。 Composer は、ハッシュ値が Composer.lock に記録されているものと異なることを警告します。
それで、私たちは何をすべきでしょうか? update コマンドはロック ファイルを更新できますが、いくつかの説明を追加するだけの場合は、ライブラリを更新しないでください。この場合は、何も更新しないでください:
$ composer update nothing Loading composer repositories with package information Updating dependencies Nothing to install or update Writing lock file Generating autoload files
この方法では、Composer はライブラリを更新しませんが、composer.lock を更新します。更新コマンドでは何もキーワードではないことに注意してください。このパッケージが引き起こすものは何もありません。 foobar と入力しても、結果は同じです。
使用している Composer のバージョンが十分に新しい場合は、--lock オプションを直接使用できます:
composer update --lock
2. Composer.json を編集せずにライブラリをインストールします
ライブラリ.jsonをインストールするのが面倒な場合は、requireコマンドを直接使用できます。
composer require "foo/bar:1.0.0"
このメソッドは、新しいプロジェクトをすばやく開くためにも使用できます。 init コマンドには --require オプションがあり、composer.json を自動的に作成できます (質問に答える必要がないように -n を使用していることに注意してください)
$ composer init --require=foo/bar:1.0.0 -n $ cat composer.json { "require": { "foo/bar": "1.0.0" } }
3. 初期化中に、導出は簡単です。 create-projectコマンドは試しましたか?
composer create-project doctrine/orm path 2.2.0
これにより、リポジトリのクローンが自動的に作成され、指定されたバージョンがチェックアウトされます。このコマンドは、元の URI を検索する必要がないため、ライブラリのクローンを作成するときに使用すると非常に便利です。
4. キャッシュを検討し、dist パッケージを優先します
過去 1 年間の Composer は、ダウンロードした dist パッケージを自動的にアーカイブします。デフォルトでは、dist パッケージは、「symfony/symfony」:「v2.1.4」などのタグ付きバージョン、またはワイルドカードまたはバージョン範囲「2.1.*」または「>=2.2,
dist パッケージは dev-master などのブランチにも使用できます。Github では、特定の git リファレンスの tarball をダウンロードできます。tarball の使用を強制するには、代わりにソース コードのクローンを作成するには、インストールと更新の --prefer-dist オプションを使用できます。
これが例です (実行時間を表示するために --profile オプションを使用しました):
$ composer init --require="twig/twig:1.*" -n --profile Memory usage: 3.94MB (peak: 4.08MB), time: 0s $ composer install --profile Loading composer repositories with package information Installing dependencies - Installing twig/twig (v1.12.2) Downloading: 100% Writing lock file Generating autoload files Memory usage: 10.13MB (peak: 12.65MB), time: 4.71s $ rm -rf vendor $ composer install --profile Loading composer repositories with package information Installing dependencies from lock file - Installing twig/twig (v1.12.2) Loading from cache Generating autoload files Memory usage: 4.96MB (peak: 5.57MB), time: 0.45s
ここでは、twig/twig: 1.12. 2 の圧縮パッケージは ~/.composer/cache/files/twig/twig/1.12.2.0-v1.12.2.zip に保存されています。 パッケージ
5 の変更を検討する場合は、それを直接使用してください。を優先する必要があります
ライブラリを変更する必要がある場合は、パッケージをダウンロードするよりもソース コードを複製する方が便利です
composer update symfony/yaml --prefer-source
次に、 --prefer-source を使用して、複製されたソース コードを強制的に選択できます。ファイルを変更します:
composer status -v You have changes in the following dependencies: /path/to/app/vendor/symfony/yaml/Symfony/Component/Yaml: M Dumper.php
ライブラリを更新しようとすると、Composer は次のことを通知し、変更を放棄するかどうかを尋ねます:
$ composer update Loading composer repositories with package information Updating dependencies - Updating symfony/symfony v2.2.0 (v2.2.0- => v2.2.0) The package has modified files: M Dumper.php Discard changes [y,n,v,s,?]?
運用環境の準備をする
最後に、コードを運用環境にデプロイするとき環境に合わせて自動読み込みを最適化することを忘れないでください:
composer dump-autoload --optimize
このオプションを使用しないと、20% から 25% のパフォーマンスが低下する可能性があります
。