Was ist der Unterschied zwischen require und require-dev? [duplicate]
Lesezeit: 4 Minuten
schleichender
Ich bin neu in der composer und ich würde gerne den Unterschied zwischen wissen require und require-dev. Die Composer-Website bietet keine gute Erklärung für den Unterschied zwischen diesen beiden.
Der Teil, den ich nicht verstehe, ist Lists packages required for developing this package, or running tests, etc. aus Komponist Offizielle Dokumente.
Scott Teslar
Das require-dev Pakete sind Pakete, die sind nicht notwendig damit Ihr Projekt funktioniert und sollte nicht in die aufgenommen werden Produktion Version Ihres Projekts.
Typischerweise sind dies Pakete wie z phpunit/phpunit die Sie nur während der Entwicklung verwenden würden.
Woher weiß Composer, dass es sich in einer Entwicklungsumgebung befindet und verwenden sollte require-dev?
– Treten
25. Dezember 2015 um 19:41 Uhr
@ surfer190 Mein Verständnis ist, dass der Komponist es nicht weiß; Sie müssen composer install oder update mit der Option –no-dev in Ihrer Live-Umgebung ausführen, um die Installation der dev-Pakete zu vermeiden, aber ich könnte mich irren.
– José B
14. Januar 2016 um 16:23 Uhr
Willst du überhaupt, dass der Komponist es weiß?
– Cas Blume
2. März 2016 um 10:44 Uhr
@surfer190 Standardmäßig werden “dev”-Abhängigkeiten für das Paket installiert, in dem Sie es ausführen composer install (was Composer das “Root-Paket” nennt), aber nicht für andere Pakete, die als Abhängigkeiten installiert sind.
– Nathan Craike
1. April 2016 um 4:27 Uhr
Ich denke, die eigentliche Frage hier ist “Werden Pakete reinkommen require-dev Composer beschweren sich auf composer update|require für Pakete ein require?
– Brandon
8. Dezember 2016 um 15:35 Uhr
Nathan Craike
Der Hauptunterschied besteht darin, dass Composer nur installiert wird require-dev Abhängigkeiten für das „Root-Paket“ – das Verzeichnis, in dem Sie es ausführen composer install. Die Dokumentation beschreibt dies als:
Das Root-Paket ist das Paket, das durch die definiert wird composer.json an der Wurzel Ihres Projekts. Es ist die Hauptsache composer.json die Ihre Projektanforderungen definiert.
In der Praxis bedeutet dies, dass ein Paket require-dev Abhängigkeiten werden nicht verwendet, wenn das Paket als Abhängigkeit für etwas anderes installiert wird (dh es wird in einem anderen Projekt installiert vendor Mappe).
Also, wenn Sie haben phpunit in dem require-dev Liste für Dein Projektund ich klone nach unten Dein Projekt und Renn composer install in dem yourproject/ Verzeichnis wird Composer installiert phpunit zu yourproject/vendor/weil es wahrscheinlich ist, dass ich einige mache Entwicklung an Dein Projekt. Als Teil der Entwicklung werde ich wahrscheinlich laufen wollen Dein Projekt‘s Test Suite, und dazu brauche ich phpunit.
Aber wenn ich hinzufüge Dein Projekt als Abhängigkeit von Mein ProjektInstallation der myproject Paket installiert die yourproject Paket auch, aber es lässt sich nicht installieren phpunit.
Du kann Überschreiben Sie dieses Verhalten mit der --dev und --no-devOptionenaber das Standardverhalten basiert darauf, ob es sich bei dem betreffenden Paket um die Root-Paket.
Beachten Sie, dass einige der anderen Antworten Abschnitte der Composer-Dokumentation zitieren, die sich seit der Veröffentlichung dieser Antworten geändert haben. Die zitierten Abschnitte sind veraltet.
– Nathan Craike
23. März 2017 um 5:45 Uhr
klarste Erklärung hier, nach dem Lesen dieser machen die anderen Sinn
– Lukas
18. April 2017 um 20:43 Uhr
Sehr klare Erklärung.
– AGBrais
9. Dezember 2019 um 21:41 Uhr
scheint mir klar:
benötigen
Listet Pakete auf, die von diesem Paket benötigt werden. Das Paket wird nur installiert, wenn diese Anforderungen erfüllt werden können.
require-dev (nur root)
Listet Pakete auf, die für die Entwicklung dieses Pakets erforderlich sind(1)oder Ausführen von Tests usw. Die dev-Anforderungen des Root-Pakets werden nur installiert, wenn install mit ausgeführt wird --dev oder wenn Update ohne ausgeführt wird --no-dev.
1. die Pakete, die zum Entwickeln eines Pakets verwendet werden
Es ist immer noch nicht klar, auf welches Paket sich “dieses Paket” bezieht.
– Scott Tesler
17. Oktober 2013 um 4:16 Uhr
@ScottDavidTesler dieses Paket das Paket, das Sie in Ihrem bereitstellen composer.json Datei wie "require-dev": { // this package('s) }
– Rahil Wazir
25. Juni 2014 um 13:06 Uhr
@Dagon Wen interessiert es, wie alt der Thread ist? Die Leute werden es sich noch ansehen, möglicherweise für viele Jahre. Stack Overflow ist kein normales Forum, in dem Nachrichten nach ein paar Tagen verloren gehen.
– rjmunro
6. Oktober 2014 um 14:45 Uhr
“Die dev-Anforderungen des Root-Pakets werden nur installiert, wenn install mit ausgeführt wird --dev…“ Dies wurde inzwischen in der verlinkten Dokumentation geändert zu: „Die dev-Anforderungen des Root-Pakets werden standardmäßig installiert.“ Der obige Auszug ist veraltet.
– Nathan Craike
15. September 2016 um 5:48 Uhr
13621600cookie-checkWas ist der Unterschied zwischen require und require-dev? [duplicate]yes