Ich fange an, Composer zu verwenden, ich weiß so wenig darüber und habe ein wenig Erfahrung mit der Entwicklung von Webanwendungen.
Ich gehe einfach durch Nettuts + Tutorial , also habe ich grundlegende Fragen zum Komponisten.
{
"require": {
"laravel/framework": "4.0.*",
"way/generators": "dev-master",
"twitter/bootstrap": "dev-master",
"conarwelsh/mustache-l4": "dev-master"
},
"require-dev": {
"phpunit/phpunit": "3.7.*",
"mockery/mockery": "0.7.*"
},
"autoload": {
"classmap": [
"app/commands",
"app/controllers",
"app/models",
"app/database/migrations",
"app/database/seeds",
"app/tests/TestCase.php"
]
},
"scripts": {
"post-update-cmd": "php artisan optimize"
},
"minimum-stability": "dev"
}
- Was auch immer teilweise erscheint
"require-dev"
, wird nur mit heruntergeladen und installiertcomposer install --dev
? - Ich habe einige Dokumentationen des Komponisten gelesen, verstehe aber immer noch nicht, warum wir einen
"require-dev"
Teil davon haben. Liegt es daran, dass wir eine bestimmte Version des Pakets erhalten möchten, anstatt immer die neueste stabile Version zu erhalten?
composer-php
Handwerker
quelle
quelle
Antworten:
Unterschiedliche Umgebungen
In der Regel wird Software in verschiedenen Umgebungen ausgeführt:
development
testing
staging
production
Unterschiedliche Abhängigkeiten in unterschiedlichen Umgebungen
Die Abhängigkeiten, die im
require
Abschnitt von deklariert werden,composer.json
sind normalerweise Abhängigkeiten, die zum Ausführen einer Anwendung oder eines Pakets in erforderlich sindstaging
production
Umgebungen, während die im
require-dev
Abschnitt deklarierten Abhängigkeiten normalerweise Abhängigkeiten sind, die in erforderlich sinddeveloping
testing
Umgebungen.
Zusätzlich zu den Paketen, die zum tatsächlichen Ausführen einer Anwendung verwendet werden, werden möglicherweise Pakete für die Entwicklung der Software benötigt, z.
friendsofphp/php-cs-fixer
(um Probleme mit dem Codierungsstil zu erkennen und zu beheben)squizlabs/php_codesniffer
(um Probleme mit dem Codierungsstil zu erkennen und zu beheben)phpunit/phpunit
(um die Entwicklung mit Tests voranzutreiben)Einsatz
In
development
und intesting
Umgebungen werden Sie normalerweise ausgeführtum beide
production
unddevelopment
Abhängigkeiten zu installieren .Doch in
staging
undproduction
Umgebungen, wollen Sie nur Abhängigkeiten installieren , die für die Ausführung der Anwendung erforderlich sind, und als Teil des Bereitstellungsprozesses, würden Sie in der Regel laufenum nur
production
Abhängigkeiten zu installieren .Semantik
Mit anderen Worten, die Abschnitte
require
require-dev
Geben Sie an, auf
composer
welche Pakete installiert werden soll, wenn Sie ausgeführt werdenoder
Das ist alles.
Hinweis Entwicklungsabhängigkeiten von Paketen, von denen Ihre Anwendung oder Ihr Paket abhängt, werden niemals installiert
Als Referenz siehe:
quelle
vendor
Ordners über FTP "bereitstelle" ?—no-dev
. Auch FTP wird wahrscheinlich ziemlich langsam sein.composer.json
- siehe zum Beispiel github.com/FriendsOfPHP/PHP-CS-Fixer/tree/2.16/dev-tools .Nach dem Handbuch des Komponisten :
Beim Ausführen
composer install
werden also auch die Entwicklungsabhängigkeiten heruntergeladen.Der Grund ist eigentlich ganz einfach. Wenn Sie zu einer bestimmten Bibliothek beitragen, möchten Sie möglicherweise Testsuiten oder andere Entwicklungstools (z. B. Symfony) ausführen. Wenn Sie diese Bibliothek jedoch in einem Projekt installieren, sind diese Entwicklungsabhängigkeiten möglicherweise nicht erforderlich: Nicht für jedes Projekt ist ein Testläufer erforderlich.
quelle
Von der Komponisten-Site (es ist klar genug)
Mit require-dev in Composer können Sie die Abhängigkeiten deklarieren, die Sie für die Entwicklung / das Testen des Projekts benötigen, aber in der Produktion nicht benötigen. Wenn Sie das Projekt auf Ihren Produktionsserver (mit git) hochladen, wird der
require-dev
Teil ignoriert.Überprüfen Sie auch diese Antwort des Autors und diesen Beitrag .
quelle
Erforderlicher Abschnitt Dieser Abschnitt enthält die Pakete / Abhängigkeiten, die bessere Kandidaten für die Installation / Anforderung in der Produktionsumgebung sind.
require-dev-Abschnitt: Dieser Abschnitt enthält die Pakete / Abhängigkeiten, mit denen der Entwickler seinen Code testen kann (oder um auf seinem lokalen Computer zu experimentieren, und er möchte nicht, dass diese Pakete in der Produktionsumgebung installiert werden).
quelle
Die allgemeine Regel lautet, dass Sie Pakete aus dem Abschnitt " require-dev " nur in Entwicklungsumgebungen (dev) wünschen , z. B. in einer lokalen Umgebung.
Pakete im Abschnitt require-dev sind Pakete, mit denen Sie Apps debuggen, Tests ausführen usw. können.
In der Staging- und Produktionsumgebung möchten Sie wahrscheinlich nur Pakete aus dem erforderlichen Bereich.
Sie können die Composer-Installation --no-dev und das Composer-Update --no-dev jedoch in jeder Umgebung ausführen. Der Befehl installiert nur Pakete aus dem erforderlichen Abschnitt, nicht aus require-dev . Wahrscheinlich möchten Sie dies jedoch nur beim Staging und bei der Produktion ausführen Umgebungen nicht lokal.
Theoretisch können Sie alle Pakete in den erforderlichen Bereich stellen, und es wird nichts passieren, aber Sie möchten aus folgenden Gründen keine Pakete in der Produktionsumgebung entwickeln:
Einige gute Kandidaten für require-dev sind:
Sie können sehen, was die oben genannten Pakete tun, und Sie werden sehen, warum Sie sie für die Produktion nicht benötigen.
Weitere Informationen finden Sie hier: https://getcomposer.org/doc/04-schema.md
quelle