Heim  >  Artikel  >  Entwicklungswerkzeuge  >  Warum lädt Composer die Codebasis nicht rekursiv?

Warum lädt Composer die Codebasis nicht rekursiv?

藏色散人
藏色散人Original
2019-08-14 14:26:321885Durchsuche

In der folgenden Spalte mit dem Composer-Tutorial wird erklärt, warum Composer die Codebibliothek nicht rekursiv lädt. Ich hoffe, dass es für Freunde in Not hilfreich ist!

Warum lädt Composer die Codebasis nicht rekursiv?

Warum lädt Composer die Codebasis nicht rekursiv?

Wenn Sie benutzerdefinierte Bibliotheken verwenden, können Probleme auftreten, da Composer die von Ihnen angeforderten Anforderungsbibliotheken nicht rekursiv lädt. Sie müssen daher alle Composer.json-Dateien in diesen Bibliotheken neu definieren.

Bevor wir detailliert erläutern, warum dies der Fall ist, müssen Sie verstehen: Der Hauptzweck von benutzerdefinierten VCS- und Paket-Repositories besteht darin, etwas vorübergehend zu testen oder ein Projekt zu forken, um einige Verbesserungen vorzunehmen, und Ihr Pull Request hat dies nicht getan noch durch Zusammenführung usw. Sie sollten sie nicht verwenden, um Ihre privaten Pakete zu verfolgen. Stattdessen sollten Sie sich an Private Packagist wenden, um private Pakete für Ihr Unternehmen oder sogar für sich selbst zu verwalten.

Es gibt drei Möglichkeiten, den Abhängigkeitslöser dazu zu bringen, Ihr benutzerdefiniertes Repository zu verwenden:

● Lesen Sie das Repository des Root-Pakets und holen Sie es aus dem definierten Repository. Alle Softwarepakete lösen Abhängigkeiten auf Anforderungen. Dies ist der aktuelle Status und es funktioniert einwandfrei, mit Ausnahme der Einschränkung „Repository kann nicht rekursiv geladen werden“.

● Lesen Sie das Repository des Root-Pakets und initialisieren Sie gleichzeitig das Ressourcenpaket aus den definierten Repos. Die rekursive Initialisierung basiert auf den Repos, die in allen abhängigen Paketen definiert sind, und den Repos, die in anderen Paketen definiert sind, die von diesen abhängig sind Pakete hängen von usw. ab und lösen dann die Abhängigkeitsanforderungen auf. Dies funktioniert möglicherweise, beeinträchtigt jedoch erheblich die Geschwindigkeit der Initialisierung, da das Lesen jedes VCS-Repos einige Sekunden dauert. Letztendlich kann es fehlschlagen, weil verschiedene Versionen eines Pakets möglicherweise aus demselben Paket in einem Paket-Repository stammen, jedoch aus einer anderen Distribution/Quelle. Es gibt so viel, was schief gehen kann.

● Lesen Sie das Repository des Root-Pakets, lesen Sie dann die Abhängigkeiten der ersten Ebene, lesen Sie dann andere Pakete, von denen diese abhängigen Pakete abhängig sind usw., und analysieren Sie dann die Abhängigkeitsanforderungen. Das hört sich effizienter an, birgt aber immer noch die Probleme der zweiten Lösung. Denn das Laden abhängiger Repositories ist nicht so einfach, wie es sich anhört. Sie müssen die Repos aller möglichen passenden Abhängigkeitspakete laden, und die Definitionen dieser Pakete können miteinander in Konflikt stehen.

Weitere Tutorials zur Verwendung von Composer finden Sie in der Spalte Grafik-Tutorial zur Verwendung von Composer-Befehlen!

Das obige ist der detaillierte Inhalt vonWarum lädt Composer die Codebasis nicht rekursiv?. 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