Was ist der Unterschied zwischen require und require-dev? [duplicate]

Lesezeit: 4 Minuten

Benutzer-Avatar
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.

Benutzer-Avatar
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

Benutzer-Avatar
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.

…und die require-dev Dokumentation gibt an, dass es “nur root” ist.

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-dev Optionenaber 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.

http://getcomposer.org/doc/04-schema.md


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


1362160cookie-checkWas ist der Unterschied zwischen require und require-dev? [duplicate]

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy