suchen
HeimBackend-EntwicklungPHP-TutorialKomponist global verlangt als schädlich?

Composer Global Require Considered Harmful?

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.
Wir haben zuvor Komponisten -Best Practices besprochen, und ich habe mich immer für die Installation von Paketen befasst, die in mehreren Projekten verwendet werden können (insbesondere in Befehlszeilen -Tools). Dann stieß ich eines Tages auf diese Diskussion.

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. Composer Global Require Considered Harmful?

op Die empfohlene Lösung für dieses Problem ist:

Alternativ sollten Benutzer

verwenden, um jedes Befehlszeilen -Tool in ihrem eigenen lokalen Projekt zu installieren und ihre
oder binären Dateien manuell zu verwalten (zum Beispiel, indem bereits aus dem Verzeichnis von

Bin das symbolische Links vorhanden ist ). composer 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

oder
global 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:

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

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.

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
Die 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 ~/.bashrc
Dann 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

ordnungsgemäß

cgr Auf dem Homestead verbessert wird ein nützlicher Alias ​​konfiguriert, wobei das Tippen

auf

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 in
cgr 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!

Stellungnahme
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Arbeiten mit Flash -Sitzungsdaten in LaravelArbeiten mit Flash -Sitzungsdaten in LaravelMar 12, 2025 pm 05:08 PM

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-

Curl in PHP: So verwenden Sie die PHP -Curl -Erweiterung in REST -APIsCurl in PHP: So verwenden Sie die PHP -Curl -Erweiterung in REST -APIsMar 14, 2025 am 11:42 AM

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

PHP -Protokollierung: Best Practices für die PHP -ProtokollanalysePHP -Protokollierung: Best Practices für die PHP -ProtokollanalyseMar 10, 2025 pm 02:32 PM

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

Vereinfachte HTTP -Reaktion verspottet in Laravel -TestsVereinfachte HTTP -Reaktion verspottet in Laravel -TestsMar 12, 2025 pm 05:09 PM

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' =>

12 Beste PHP -Chat -Skripte auf Codecanyon12 Beste PHP -Chat -Skripte auf CodecanyonMar 13, 2025 pm 12:08 PM

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

Erklären Sie das Konzept der späten statischen Bindung in PHP.Erklären Sie das Konzept der späten statischen Bindung in PHP.Mar 21, 2025 pm 01:33 PM

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

Anpassung/Erweiterung von Frameworks: So fügen Sie benutzerdefinierte Funktionen hinzu.Anpassung/Erweiterung von Frameworks: So fügen Sie benutzerdefinierte Funktionen hinzu.Mar 28, 2025 pm 05:12 PM

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.

See all articles

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heiße Werkzeuge

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

Leistungsstarke integrierte PHP-Entwicklungsumgebung

SublimeText3 Linux neue Version

SublimeText3 Linux neue Version

SublimeText3 Linux neueste Version

MantisBT

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

Herunterladen der Mac-Version des Atom-Editors

Der beliebteste Open-Source-Editor

mPDF

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),