Schlüsselpunkte
composer global require
composer require
oder binäre Dateien manuell verwalten. Dies kann jedoch Komplexität und Leidenschaft verleihen. Eine vorgeschlagene Änderung eines globalen Befehls kann ein "globales", aber isoliertes Projekt an einem bestimmten Standort installiert werden, wobei die Verzeichnisse der Anbieter und der Bin -Verzeichnisse an ihrem üblichen Standort erscheinen. $PATH
composer global require
Kurz gesagt, die meisten Menschen scheinen jetzt zu glauben, dass globales Erfordernis eine schlechte Praxis ist, es sei denn, das global installierte Paket hat keine Abhängigkeiten. Technisch gesehen ist dies sinnvoll, wenn man eine einzige Umgebung für alle Projekte verwendet, aber wie ich in dieser Diskussion kommentierte, ist dieses Problem irrelevant, und die Gesamtsituation wird eigentlich nicht tatsächlich nicht isoliertes Umfeld wie Docker verwendet, und die Gesamtsituation wird eigentlich nicht tatsächlich Schäden verursachen.
Alternativ sollten Benutzer
verwenden, um jedes Befehlszeilen -Tool in ihrem eigenen lokalen Projekt zu installieren und ihreoder binären Dateien manuell zu verwalten (zum Beispiel, indem bereits aus dem Verzeichnis vonglobal macht. Symbolverbindungen müssen zusammen erstellt werden (insbesondere wenn man bedenkt, dass nicht symplinierte Betriebssysteme wie Windows Tednessheit hinzufügen können. Dann schlägt das OP weiter vor, wie globale Befehle funktionieren:Bin das symbolische Links vorhanden ist ).
odercomposer require
$PATH
$PATH
Für mich ist dies eine völlig inakzeptable Komplikation. Der Komponist war schon immer der Stolz von PHP, da es einfach zu bedienen ist und das Paketmanagement Neulingsfreundlichkeit - lokal
voll einverstanden. Es wäre erstaunlich, jeden weltweit installierten Komponisten in ein eigenes Quarantäneverzeichnis installieren zu können und über seine eigenen Quarantäne -Abhängigkeiten zu verfügen, anstatt möglicherweise mit anderen global installierten Paketen widersprüchlich zu sein.Ein "globales", aber isoliertes Projekt kann in
~/.composer/global/[something]
installiert werden. oder eine bessere Option könnte~/.composer/global/[something]/bin
sein. Die String~/.composer/vendor/bin
kann auf verschiedene Arten ausgewählt werden.~/.composer/bin
[something]
org/project
Ich stimme diesem Ansatz voll und ganz zu, es scheint das Beste aus beiden Welten zu sein. Dies kann natürlich zu Problemen mit Rückwärtskompatibilität führen, aber das bedeutet nicht, dass es in Version 2.0 von Composer nicht passieren wird. Taylor Otwell reagiert weiter unten auf diese Ansicht:~/.composer/global/org/project/vendor/org/project
Danach baut OP im wahren Open -Source -Geist die alternative globale Implementierung in ein separates Tool auf: CGR. Mal sehen, wie es funktioniert.CGR - Komponist global erfordern alternative
Ich werde alle folgenden Befehle auf dem Gehöft ausführen, verbesserte Instanz
Um mit CGR zu beginnen, installieren wir es als globales Paket.
Wenn sich der Bin -Ordner des Komponisten nicht in der Pfadvariablen befindet, fügen Sie ihn hinzu:
composer global require consolidation/cgr
).
echo "export PATH=$PATH:$HOME/.composer/vendor/bin/" >> ~/.bashrc echo "export CGR_BIN_DIR=$HOME/.composer/vendor/bin" >> ~/.bashrc source ~/.bashrc
ausgeführt werden, wodurch die allgemeine Hilfedatei des Komponisten ausgegeben wird. $PATH
vagrant ssh
Installieren Sie das globale Komponist -Paket
cgr
Auf dem Homestead verbessert wird ein nützlicher Alias konfiguriert, wobei das Tippen
cgr phpunit/phpunit
phpunit
Versuchen wir nun, zwei inkompatible Pakete zu installieren. vendor/bin/phpunit
phpunit
~/.bash_aliases
Natürlich können sie alle normal installiert werden. Überprüfen Sie, ob sie funktionieren.
composer global require consolidation/cgr
Alles läuft gut! Globale Pakete, die bisher aufgrund von Abhängigkeitsfehlanpassung in Konflikt geraten sind, können jetzt nebeneinander nebeneinander existieren und ohne Probleme im gesamten Betriebssystem verwendet werden!
In einigen Fällen möchten Sie das Composer -Plugin möglicherweise installieren. Wie im Abschnitt "Beschränkungen" angegeben, sind diese Plugins in allen globalen Projekten weltweit nicht verfügbar, da CGR jedes globale Paket in seinen eigenen Ordner installiert und über einen eigenen Abhängigkeitsbaum verfügt. Wenn Sie also ein Plugin installieren möchten, das das gemeinsame Verhalten des Komponisten ändert, sollten Sie immer noch composer global require
anstelle von CGR verwenden. Zum Beispiel ist CGR selbst ein solches Plugin.
testen, testen, testen! Wenn Sie ein häufiger Benutzer des globalen Befehls benötigen, empfehle ich Ihnen dringend, dieses neue Tool zu testen und Greg Anderson ein gewisses Feedback zu geben, wie viel es Ihren globalen Bedürfnissen entspricht und ob Verbesserungen vorhanden sind.
Bitte beachten Sie, dass dieses Tool derzeit nur ein Beweis für das Konzept ist und die Implementierung möglicherweise umbenannt, neu verpackt, schließlich in den Kern des Komponisten integriert und vieles mehr integriert wird. Mit anderen Worten, verwenden Sie es so viel wie möglich, aber verlassen Sie sich vorerst nicht übertrieben.
Während Ihr globales Paket installiert ist, sagen Sie uns, was Sie über composer global require
denken? Ist es so schädlich, wie viele Menschen jetzt denken? Oder geht es nur darum, vorsichtig zu sein und ein isoliertes Entwicklungsumfeld zu haben? Was noch? Bitte drücken Sie Ihre Kommentare unten aus!
-Komponisten wird als schädlich angesehen, da dies zu Abhängigkeitskonflikten führen kann. Wenn Sie Pakete global installieren, teilen sie alle den gleichen Speicherplatz, was bedeutet, dass sie dieselben Abhängigkeiten teilen. Wenn zwei Pakete unterschiedliche Versionen derselben Abhängigkeiten erfordern, kann dies zu Konflikten und Fehlern führen. Es wird empfohlen, seine eigenen Abhängigkeiten für jedes Projekt zu installieren, um solche Probleme zu vermeiden.
Verwenden Sie keine weltweite Anforderung des Komponisten, Sie können für jedes benötigte Tool ein neues Composer -Projekt erstellen. Auf diese Weise hat jedes Tool eine eigene Abhängigkeitszahl, wodurch das Konfliktrisiko verringert wird. Sie können auch Tools wie CGR verwenden, das für jedes Paket isolierte Installationen erstellt und so Probleme mit globaler Abhängigkeit vermeidet.
cgr (Composer Global Require) ist ein Tool zum Erstellen von isolierten Installationen für jedes Paket. Dies bedeutet, dass jedes Paket und seine Abhängigkeiten in einem eigenen separaten Verzeichnis installiert werden, wodurch das Risiko von Konflikten zwischen Abhängigkeiten verschiedener Pakete vermieden wird. Dies macht es zu einer sichereren Alternative zur Verwendung von Composer Global Request.
Um CGR zu installieren, können Sie den Befehl composer global require consolidation/cgr
verwenden. Nach der Installation können Sie CGR verwenden, wie Sie die globale Anforderung des Komponisten verwenden würden. Um ein Paket zu installieren, können Sie den Befehl cgr require package-name
verwenden.
im Komponisten bedeutet die lokale Installation, dass das Paket und seine Abhängigkeiten im Verzeichnis des Projekts installiert sind. Dies ist die empfohlene Möglichkeit, Pakete zu installieren, da es Abhängigkeitskonflikte vermeidet. Auf der anderen Seite installiert die globale Installation Pakete und ihre Abhängigkeiten in einem globalen Verzeichnis, was zu Konflikten führen kann, wenn verschiedene Pakete unterschiedliche Versionen derselben Abhängigkeiten erfordern.
Die Verwaltung globaler Abhängigkeiten im Komponisten kann aufgrund des Konfliktrisikos eine Herausforderung sein. Tools wie CGR können jedoch helfen, indem isolierte Installationen für jedes Paket erstellt werden. Sie können auch globale Abhängigkeiten verwalten, indem Sie für jedes erforderliche Tool ein neues Komponist -Projekt erstellen, um sicherzustellen, dass jedes Tool über seine eigenen Abhängigkeiten verfügt.
Ja, Sie können sowohl lokale als auch globale Installationen im Komponisten verwenden. Es wird jedoch empfohlen, nach Möglichkeit eine lokale Installation zu verwenden, um Abhängigkeitskonflikte zu vermeiden. Wenn Sie global Pakete verwenden müssen, sollten Sie Tools wie CGR verwenden, um eine isolierte Installation zu erstellen.
fälschlicherweise Verwaltung von Abhängigkeiten im Komponisten kann zu Konflikten und Fehlern führen. Wenn zwei Pakete die gleichen Abhängigkeiten verschiedener Versionen erfordern, kann dies schwierig zu Debuggs zu Problemen führen. Es kann auch ein unerwartetes Verhalten der Anwendung verursachen, da verschiedene Versionen von Abhängigkeiten unterschiedliche Funktionen und Verhaltensweisen haben können.
Um Abhängigkeitskonflikte im Komponisten zu lösen, können Sie versuchen, das Paket auf die neueste Version zu aktualisieren, da dies den Konflikt beheben kann. Wenn dies nicht funktioniert, möchten Sie möglicherweise das von Ihnen verwendete Paket überdenken und Alternativen finden, die keine widersprüchlichen Abhängigkeiten haben. Tools wie CGR können auch helfen, indem isolierte Installationen für jedes Paket erstellt werden.
Um die Abhängigkeiten der Komponisten auf dem neuesten Stand zu halten, können Sie den Befehl composer update
verwenden. Dies aktualisiert alle Pakete auf der neuesten Version, basierend auf der in der composer.json
-Fatei angegebenen Versionsbeschränkung. Sie können auch den Befehl composer outdated
verwenden, um zu sehen, welche Pakete für neuere Versionen verfügbar sind.
Das obige ist der detaillierte Inhalt vonKomponist global verlangt als schädlich?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!