19

PHP 開発者として、私は Composer を頻繁に使用しています。以前は個人的なプロジェクトなどだったのであまり問題はありませんでしたが、現在は Laravel 4 でデプロイが必要なプロジェクトにあり、ワークフローを適応させるのに苦労しています。

私のプロジェクトはすべて git リポジトリです。したがって、慣習に従って、まだかなりバグがあるため、ほとんどの開発者と同様に、vendorディレクトリを my.xml に置き.gitignoreます。問題は次のとおりです。Gitを使用してサーバーにデプロイしますが、リポジトリによって追跡されないため、すべてのロジックにより、ベンダーディレクトリはアップロードされません。

そこで私の質問は、Composer と Git を私よりも長く使ってきた人たちに向けたものです。サーバーの同期を維持するための最適なワークフローは何ですか? 実際に追跡せずにベンダーフォルダーを追跡する方法は? Composer で更新するたびにアップロードしようとしましたが、いくつかのベンダー フォルダーは非常に大きく、何かが更新されるたびに 30Mb のファイルを手動でアップロードすることはできません。

よくわかりません、皆さんはどうやって解決していますか?フォルダーを無視しないようにしようとしましたvendorが、Git はそれを台無しにし、半分は複製されたリポジトリとして認識され、とにかく無視されます。

更新:私は共有ホストにいるので、サーバーの端末にアクセスできないことに注意してください。

4

6 に答える 6

9

最善の方法はcomposer install、最新のコードに更新した後にサーバーで実行することです。また、composer.lockファイルをコミットしていることを確認する必要があります。このファイルは、サーバーがインストールに使用します(composer updateサーバー上で実行しないでください)。

于 2013-01-24T12:12:31.267 に答える
1

jenkins のようなものを使用してファイルを ftp することができます。この方法では、jenkins に、jenkins サーバーで composer install を実行し、ファイルを ftp で転送するように指示できます。

これにより、ベンダー フォルダーを無視することもできます。

ビルドサーバーを作成する必要があり、ビルドサーバーに対してコマンドを実行できる必要があります

于 2016-09-23T22:43:05.743 に答える
-1

鍵はあなたのcomposer.lockファイルです。composer.lock は、インストールしたパッケージ (およびバージョン) を正確に追跡します。展開するときは、composer.lockファイルを本番サーバーにも送信し、composer update. まったく同じバージョンのパッケージがすべてインストールされます。Capistrano や Flightplan などの展開ソフトウェアを使用すると、composer updateステップをプロセスの一部にして、自動的に実行できます。

于 2014-09-08T22:38:05.740 に答える