Schlüsselpunkte
- Sofern ein global installiertes Paket keine Abhängigkeiten hat, wird es jetzt als schlechte Praxis für die Installation von Paketen angesehen, die in mehreren Projekten verwendet werden. Dies liegt daran, dass wenn die Pakete denselben Raum teilen, Abhängigkeitskonflikte auftreten können.
composer global require
Eine andere Lösung besteht darin, jedes Befehlszeilen -Tool in seinem eigenen lokalen Projekt zu installieren, indem Sie - manuell verwalten, die
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
Ein neues Tool CGR (Composer Global Request) wurde als Alternative zur globalen Implementierung entwickelt. Es schafft isolierte Installationen für jedes Paket und vermeidet globale Abhängigkeitsprobleme. Dieses Tool befindet sich jedoch noch in der Proof of Concept -Phase und kann sich ändern. Es wird empfohlen, es zu testen, aber zu diesem Zeitpunkt nicht zu sehr darauf verlassen.
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/cgrDie obigen Befehle verwenden den Pfad des globalen Bin -Verzeichnisses des Komponisten, um die Umgebungsvariablen zu erweitern (der Standardstandort auf Homestead verbessert - Ihr Standort kann unterschiedlich sein). Der zweite Befehl konfiguriert das von CGR verwendete Bin -Verzeichnis, während der dritte Befehl diese Änderungen lädt. Diese werden auch automatisch jedes Mal automatisch geladen, wenn die Terminalschnittstelle als Benutzer ausgeführt wird (in meinem Fall mit Vagrant über
).
echo "export PATH=$PATH:$HOME/.composer/vendor/bin/" >> ~/.bashrc echo "export CGR_BIN_DIR=$HOME/.composer/vendor/bin" >> ~/.bashrc source ~/.bashrcDann können Sie auf das CGR zugreifen, indem Sie
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
erweitert wird, was bei der Installation
für jedes Projekt sehr bequem ist, sodass Sie es aus dem Stammordner ausführen können. Um die globale Installation von Phpunit zu testen, müssen wir zuerst diesen Alias löschen (kommentieren Sie die entsprechende Zeile incgr phpunit/phpunit), beenden Sie dann die Shell und gehen Sie wieder ein, damit der Alias neu geladen wird. Wenn Sie diese neue globale Installation von Phpunit unter Verwendung der Versionsausgabe ausführen
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!
Was sollte/können dieses Tool nicht machen?
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.
Was kommt als nächstes?
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!
FAQs über Komponist Global erfordern
Warum wird es als schädlich angesehen, die globale Anforderung des Komponisten zu verwenden?
Die globale Anforderung des-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.
Was ist die Alternative zum Komponisten -Global -Forderung?
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 Wie kann ich helfen, globale Abhängigkeitsprobleme zu vermeiden?
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.
Wie installiere und verwende ich CGR?
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.
Was ist der Unterschied zwischen der lokalen Installation und der globalen Installation im Komponisten?
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.
Wie man globale Abhängigkeiten im Komponisten verwaltet?
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.
Kann ich sowohl lokale als auch globale Installationen im Komponisten verwenden?
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.
Was sind die Risiken für fälschliche Verwaltung von Abhängigkeiten im Komponisten?
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.
Wie kann man Abhängigkeitskonflikte im Komponisten lösen?
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.
Wie kann man Komponistenabhängigkeiten auf dem neuesten Stand halten?
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!

Laravel vereinfacht die Behandlung von temporären Sitzungsdaten mithilfe seiner intuitiven Flash -Methoden. Dies ist perfekt zum Anzeigen von kurzen Nachrichten, Warnungen oder Benachrichtigungen in Ihrer Anwendung. Die Daten bestehen nur für die nachfolgende Anfrage standardmäßig: $ Anfrage-

Die PHP Client -URL -Erweiterung (CURL) ist ein leistungsstarkes Tool für Entwickler, das eine nahtlose Interaktion mit Remote -Servern und REST -APIs ermöglicht. Durch die Nutzung von Libcurl, einer angesehenen Bibliothek mit Multi-Protokoll-Dateien, erleichtert PHP Curl effiziente Execu

Die PHP -Protokollierung ist für die Überwachung und Debugie von Webanwendungen von wesentlicher Bedeutung sowie für das Erfassen kritischer Ereignisse, Fehler und Laufzeitverhalten. Es bietet wertvolle Einblicke in die Systemleistung, hilft bei der Identifizierung von Problemen und unterstützt eine schnellere Fehlerbehebung

Laravel bietet eine kurze HTTP -Antwortsimulationssyntax und vereinfache HTTP -Interaktionstests. Dieser Ansatz reduziert die Code -Redundanz erheblich, während Ihre Testsimulation intuitiver wird. Die grundlegende Implementierung bietet eine Vielzahl von Verknüpfungen zum Antworttyp: Verwenden Sie Illuminate \ Support \ facades \ http; Http :: fake ([ 'Google.com' => 'Hallo Welt',, 'github.com' => ['foo' => 'bar'], 'Forge.laravel.com' =>

Möchten Sie den dringlichsten Problemen Ihrer Kunden in Echtzeit und Sofortlösungen anbieten? Mit Live-Chat können Sie Echtzeitgespräche mit Kunden führen und ihre Probleme sofort lösen. Sie ermöglichen es Ihnen, Ihrem Brauch einen schnelleren Service zu bieten

In Artikel wird die in PHP 5.3 eingeführte LSB -Bindung (LSB) erörtert, die die Laufzeitauflösung der statischen Methode ermöglicht, um eine flexiblere Vererbung zu erfordern. Die praktischen Anwendungen und potenziellen Perfo von LSB

In dem Artikel werden Frameworks hinzugefügt, das sich auf das Verständnis der Architektur, das Identifizieren von Erweiterungspunkten und Best Practices für die Integration und Debuggierung hinzufügen.

Alipay PHP ...


Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

ZendStudio 13.5.1 Mac
Leistungsstarke integrierte PHP-Entwicklungsumgebung

SublimeText3 Linux neue Version
SublimeText3 Linux neueste Version

MantisBT
Mantis ist ein einfach zu implementierendes webbasiertes Tool zur Fehlerverfolgung, das die Fehlerverfolgung von Produkten unterstützen soll. Es erfordert PHP, MySQL und einen Webserver. Schauen Sie sich unsere Demo- und Hosting-Services an.

Herunterladen der Mac-Version des Atom-Editors
Der beliebteste Open-Source-Editor

mPDF
mPDF ist eine PHP-Bibliothek, die PDF-Dateien aus UTF-8-codiertem HTML generieren kann. Der ursprüngliche Autor, Ian Back, hat mPDF geschrieben, um PDF-Dateien „on the fly“ von seiner Website auszugeben und verschiedene Sprachen zu verarbeiten. Es ist langsamer und erzeugt bei der Verwendung von Unicode-Schriftarten größere Dateien als Originalskripte wie HTML2FPDF, unterstützt aber CSS-Stile usw. und verfügt über viele Verbesserungen. Unterstützt fast alle Sprachen, einschließlich RTL (Arabisch und Hebräisch) und CJK (Chinesisch, Japanisch und Koreanisch). Unterstützt verschachtelte Elemente auf Blockebene (wie P, DIV),