Ist eine saubere nodes_modules-Architektur möglich?

Dieser Artikel ist ein bisschen wie ein Aufruf zu Experimenten und Diskussionen. Ich recherchiere derzeit, um zu sehen, was getan werden könnte, um die Struktur von nodes_modules zu verbessern, die in einem Projekt installiert sind. Ich bin auf diesem Gebiet noch unerfahren, also sei nachsichtig, wenn ich einen Fehler mache, und zögere vor allem nicht, mich zu korrigieren oder in den Kommentaren zurückzukommen, ich werde es gerne mit allen diskutieren/debattieren.
[Trennzeichen type=““ size=““ icon=“star“]

Erläuterungen
[Reihe] [ein_drittel] schwingen
[/one_third] [two_third] Um meine Mängel zu diesem Thema auszumerzen, habe ich mich in die Installation von nodes_modules für eines meiner Projekte gestürzt, das mit gulp arbeiten sollte.
Wenn Sie mit all dem vertraut sind, wissen Sie wahrscheinlich schon vieles von dem, was kommen wird.
Für andere sollten Sie das wissen, wenn Sie eine Abhängigkeit über installieren npm In einem Projekt ruft es automatisch die benötigten Abhängigkeiten ab (denn ja, Abhängigkeiten haben manchmal auch Abhängigkeiten).
[/two_third] [/row] Und es ist ein sehr gute sache, denn auf diese Weise muss der Entwickler kein enzyklopädisches Wissen über jedes Plugin haben. Sonst müssten wir alle für jedes Plugin notwendigen Abhängigkeiten sozusagen auswendig kennen oder jedes Mal, wenn wir eine Abhängigkeit installieren wollen, die Informationen online suchen. Überhaupt nicht alltagstauglich.
[Trennzeichen type=““ size=““ icon=“star“]
das Problem

Obwohl die automatische Installation von Abhängigkeiten ein Muss ist, bin ich mir nicht sicher, ob die resultierende Struktur optimal ist.
So sieht beispielsweise die Architektur des Plugins aus Schluck-Kompass, mit allem, was es zum Arbeiten braucht:
Beispiel-Gulp-Plugin
Das ist eine Menge Süchte! Können Sie sich vorstellen, wenn Sie das alles auswendig wissen und nacheinander installieren müssten? Wir stimmen zu, es ist nicht möglich.
Sehen Sie sich jedoch die Struktur an. Schau was passiert. Die Abhängigkeiten von Schluck-Kompass brauchen auch Abhängigkeiten. Und manchmal werden die gleichen benötigt. Ich habe Farben verwendet, um es deutlicher zu machen.

Matroschka

Ja, in der Tat, Sie landen mit einer verschachtelten Puppenarchitektur, manchmal fast unendlich, bei der jedes Gulp-Plugin seinen nodes_modules-Ordner mit seinen Abhängigkeiten enthält, also andere gulp-Plugins, die selbst nodes_modules-Ordner mit Abhängigkeiten enthalten und so weiter … wie oben in der Plugin-Beispiel Schluck-Kompass.
100421_0015
Ehrlich gesagt glaube ich, dass wir hier ein großes Problem haben.
Wenn ich mit dem Beispiel fortfahre Schluck-Kompass, und ich wähle die 'through2'-Abhängigkeit, werden Sie sehen, dass es sich um die Wurzel des gulp-compass-Plugins handelt, aber es ist auch in den Abhängigkeiten von gulp-util zu finden, das eine der Abhängigkeiten von gulp -compass ist. Kopfschmerzen ? Mich auch.
Es ist Unsinn, weil die Abhängigkeit bereits im Gulp-Compass-Plugin bereitgestellt wird, aber die Gulp-Utility-Abhängigkeit wird erneut danach suchen, weil sie funktionieren muss ... wir gehen da auf dem Kopf.
Also ja, es funktioniert so wie es ist, warum sich die Mühe machen ... außer es funktioniert nicht.
[Trennzeichen type=““ size=““ icon=“star“]

Microsoft ist...

Auf Windows-Rechnern führt dies zu Fehlern, da die Dateiadressen zu lang sind. (Siehe Diskussion auf Github).
[Zeile] [zwei_drittel]

Sicher erreichen Sie eine Datei, die in einem Ordner ist, der selbst in einem anderen Ordner ist, der selbst noch in einem anderen Ordner ist, der selbst noch ist! in einem anderen Ordner, der selbst noch ist!!!!! in einem anderen Ordner (sic…) kann es selbst für einen Computer lästig werden.
Sie werden mir also sagen, dass Microsoft völlig verkommen ist und Sie Mac verwenden müssen.
Ich gebe zu, ich bevorzuge auch den Mac, aber das rechtfertigt so eine Architektur meiner Meinung nach nicht... und ich bin der Meinung, dass es für jeden funktionieren sollte, ohne alles an der Hand putzen zu müssen.

[/zwei_drittel] [ein_drittel] 1024px-Russisch-Matroshka_no_bg
[/one_third] [/row] [Trennzeichen type=““ size=““ icon=“star“]
NPM nächste Stufe

Es mag anmaßend erscheinen, da ich ein Anfänger bin, aber ich denke, dass wir die Abhängigkeiten zu einem optimaleren Funktionieren entwickeln müssen.
Wäre es nicht klüger, die Funktionsweise dieser Plugins zu ändern, sodass sie im Basisordner nodes_modules überprüfen, ob die benötigten Abhängigkeiten bereits vorhanden sind, sie bei Bedarf aktualisieren und sie installieren, wenn sie nicht vorhanden sind, aber dennoch an der Wurzel aus dem ursprünglichen nodes_modules-Ordner? Wir hätten plötzlich einen "flachen Abhängigkeitsbaum", wie von meinem Kollegen Logu vorgeschlagen.
Die Diskussion ist also eröffnet. Zögern Sie nicht, Ihre Erfahrungen zu teilen oder Ihre Meinung zu äußern. Ich hoffe, einen Artikel zu diesem Thema mit echten Lösungen neu schreiben zu können.
Emmanuelle GUYOT / UX-Wissenschaftlerin