Composer hat die Möglichkeit, mehrere Abhängigkeiten nur während der Entwicklung zu laden, sodass die Tools nicht in der Produktion (auf dem Live-Server) installiert werden. Dies ist (theoretisch) sehr praktisch für Skripte, die nur in der Entwicklung sinnvoll sind, wie Tests, Tools für gefälschte Daten, Debugger usw.
Der Weg zu gehen ist, einen zusätzlichen require-dev
Block mit den Tools hinzuzufügen, die Sie in dev benötigen:
"require-dev": {
"codeception/codeception": "1.6.0.3"
}
und dann (theoretisch) diese Abhängigkeiten über laden
composer install --dev
Problem & Frage:
Composer hat das Verhalten von install
und update
im Jahr 2013 dramatisch geändert. require-dev
Abhängigkeiten werden jetzt standardmäßig (!) Installiert. Sie können auch eine composer.json mit einem require-dev
Block erstellen und eine composer install
Reproduktion durchführen.
Die am meisten akzeptierte Art der Bereitstellung besteht darin, den Komponisten zu pushen. Sperren Sie (das Ihr aktuelles Composer-Setup enthält) und führen Sie dann eine composer install
auf dem Produktionsserver aus. Dadurch wird auch das Entwicklungsmaterial installiert.
Was ist der richtige Weg, um dies bereitzustellen, ohne die -dev-Abhängigkeiten zu installieren?
Hinweis: Ich versuche hier ein kanonisches Q / A zu erstellen, um die seltsame Composer-Bereitstellung zu verdeutlichen. Fühlen Sie sich frei, diese Frage zu bearbeiten.
composer.lock
sollte NIEMALS zum Git-Repo hinzugefügt werden. Der richtige Ansatz besteht darin, beim Staging das Composer-Update zu verwenden und die Datei dann mit der Produktion zu synchronisieren (wenn natürlich alles funktioniert). Staging muss die exakte Kopie einer Produktionsumgebung sein. composer.lock
sollte ein Teil von sein .gitignore
.