composer.lockファイルもコミットする必要があります。これは非常に重要です。つまり、他の誰かがコードをチェックアウトすると、その/ vendorディレクトリに同じ依存関係(正確なバージョンを含む)がインストールされます。
そのため、/ vendorディレクトリをコミットする必要はありません。ロックファイルは、依存関係が修正されたことを保証します。
composer.jsonは、あなたの要件を満たす多くの潜在的な依存関係を定義します。 composer update
を実行すると、これらの要件を満たす最新のバージョンが使用可能かどうかが確認されます。これはインストールとアップデートの違いです - インストールはロックファイルから外れて、何を探すべきかを正確に知っています - アップデートはjsonファイルから外れ、異なる時点で異なる結果を返す可能性があります。
あなたのcomposer.jsonでは、あなたのルート名前空間がどこに存在するかを教えて、オートローダーを定義することができます。
"autoload": {
"psr-4": {
"RootNamespace\\": "library/src"
}
},
あなたの同僚がcomposer install
実行したとき、それが一貫性のパスに彼らのためにオートローダーを作成します。
デプロイメントのためのオプションがあります:あなたはcomposer.lockファイルをアップロードし、作曲生産にインストールを実行する、または事前にそれを行うと、ビルドの一部として、ベンダーのディレクトリをアップロードすることができますいずれか
を。
の前に、の前に問題があった場合は、プロダクションサーバー上でファイルが変更されることをお勧めします。代わりに、欠落している依存関係で本番環境をアップグレードすることができます。それらの依存関係を最初にインストールし、すべてを一度に転送することは安全です。
私はgit commitの名前をつけた別のフォルダに新しいリリースをインストールして、それを展開ステップの一部としてシンボリックリンクすることも好きです。これにより、ファイルの残りの部分がアップロードされるのを待つ間に、半分更新されたアプリケーションがないことが保証されます。このアプローチでは、前述の問題も解消されます。これは、作曲家がプロダクションからインストールできることを意味します。
'composer.lock'に関するちょっとしたメモです。同じ依存関係を確実に取得するだけではなく、まったく同じバージョン(ちょうどそれが指摘しておいたと思った)。また、ファイルをプロダクションサーバにアップロードする前に、 'composer install --no-dev --optimize-autoloader'を実行して、関連するパッケージ(dev-packagesを無視します)と最適化されたオートローダー(それは 'クラスを探すためIOを検索する必要はありません)。 –
それは私が(バージョンに関して)意味していたが、私は十分に具体的ではなかった - それを指摘してくれてありがとう。 – bcmcfc
シンボリックリンクFTW。また、必要に応じて、以前のバージョンに簡単に戻すことができます。 –