web-dev-qa-db-ja.com

Composer更新Laravel

開発者が彼のプロジェクトを送ってくれましたが、ベンダーを更新またはインストールしようとすると、最後まですべてがうまく機能し、メッセージが出力されます。

C:\xampp\htdocs\BigWaveMedia\davinkit>php artisan migrate
{
    "error": {
        "type": "Exception",
        "message": "expected color value: failed at `.clearfix;` C:\\xampp\\htdocs\\BigWaveMedia\\davinkit\\app\\start\/..\/..\/public\/less\/style.less on line 102",
        "file": "C:\\xampp\\htdocs\\davinkit\\vendor\\leafo\\lessphp\\lessc.inc.php",
        "line": 3258
    }
}
C:\xampp\htdocs\BigWaveMedia\davinkit>

何かアイデアはありますか?ここに完全なログがあります http://Pastebin.com/y9q4Rc5z

22
Brent

composer updateを実行すると、composercomposer.lockというファイルを生成します。このファイルには、すべてのパッケージと現在インストールされているバージョンがリストされます。これにより、後でcomposer installを実行して、そのファイルにリストされているパッケージをインストールし、最後に使用していた環境を再作成できます。

ログから、composer.lockファイルにリストされているパッケージの一部のバージョンが利用できなくなっているようです。したがって、composer installを実行すると、エラーが発生して失敗します。通常、これは大したことではありません-composer updateを実行するだけで、連携して動作するパッケージのセットを構築し、新しいcomposer.lockファイルを作成しようとします。

ただし、別の問題が発生しています。元の開発者がcomposer.jsonファイルに、失敗する更新前または更新後のアクション、特にphp artisan migrateコマンドを追加したようです。これは、次を実行することで回避できます。composer update --no-scripts

これにより、composer更新が実行されますが、ファイルに追加されたスクリプトはスキップされます。この方法でアップデートを正常に実行できるはずです。

ただし、これは問題を長期的に解決するものではありません。 2つの問題があります。

  1. 移行はデータベースの変更用であり、アセットのコンパイルなどのランダムなものではありません。移行を行い、そこからそのコードを削除します。

  2. composer updateを実行するたびにアセットをコンパイルしないでください。 composer.jsonファイルからそのステップを削除します。

私が読んだことから、ベストプラクティスは開発中に必要に応じてアセットをコンパイルしているようです(つまり、LESSファイルに変更を加えている場合-理想的には gulp.js のようなツールを使用して=)および展開前。

48
Kryten

次は私のために働く:

composer update --no-scripts
19
Ghulam Akbar