Composer ma możliwość załadowania kilku zależności tylko podczas opracowywania, więc narzędzia nie zostaną zainstalowane w środowisku produkcyjnym (na serwerze rzeczywistym). Jest to (w teorii) bardzo przydatne w przypadku skryptów, które mają sens tylko w programowaniu, takich jak testy, narzędzia do fałszywych danych, debugger itp.
Najlepszym sposobem jest dodanie dodatkowego require-devbloku z narzędziami potrzebnymi w programie deweloperskim:
"require-dev": {
"codeception/codeception": "1.6.0.3"
}
a następnie (teoretycznie) załaduj te zależności za pośrednictwem
composer install --dev
Problem i pytanie:
Composer zmienił zachowanie installi updateradykalnie w 2013 roku, require-dev-zależności są teraz instalowane domyślnie (!), Możesz swobodnie utworzyć plik composer.json z require-devblokiem i wykonać go composer installdo odtworzenia.
Ponieważ najbardziej akceptowanym sposobem wdrażania jest wypchnięcie kompozytora. lock (który przechowuje twoją obecną konfigurację kompozytora), a następnie wykonaj composer installna serwerze produkcyjnym, to również zainstaluje programowanie.
Jaki jest prawidłowy sposób wdrożenia tego bez instalowania zależności -dev?
Uwaga: próbuję tutaj utworzyć kanoniczne pytania / odpowiedzi, aby wyjaśnić dziwne wdrożenie kompozytora. Zapraszam do edycji tego pytania.
composer.lockNigdy nie powinny być dodawane do repo Git, nigdy. Właściwym podejściem jest użycie aktualizacji kompozytora podczas przemieszczania, a następnie zsynchronizowanie pliku z produkcją (jeśli oczywiście wszystko działa). Inscenizacja musi być dokładną kopią środowiska produkcyjnego. composer.lockpowinien być częścią .gitignore.