Soll ich transitive Dev-Abhängigkeiten zuschreiben?

Dec 23 2020

Ich arbeite an einer Bibliothek / einem CLI-Tool zum Bündeln von Abhängigkeitslizenzen in einer einzigen Datei. Derzeit bin ich versucht zu sammeln Lizenzen von: direkte Abhängigkeiten, transitive Abhängigkeiten und direkte dev -dependencies .

Mit anderen Worten, ich versuche, Lizenzen für Pakete zu sammeln, die in node_modules installiert sind. Transitive Dev-Abhängigkeiten werden vom Paketmanager aufgrund der Natur der Dev-Abhängigkeiten nicht installiert.

Ich mache mir Sorgen, ob Codeteile dieser transitiven Abhängigkeiten irgendwie in installierten Paketen enthalten sein können oder nicht.

Zum Beispiel: Projekt "A" hängt vom Paket "B" ab. Paket "B" hat Transpiler "C" als Entwicklungsabhängigkeit. Der von Transpiler "C" in Paket "B" generierte Code enthält nicht nur ein einfaches Transpilationsergebnis, sondern auch eine Polyfüllung für eine Funktion, die in älteren Browsern von Transpiler "C" nicht verfügbar ist. Da es sich bei Transpiler "C" jedoch um eine transitive Entwicklungsabhängigkeit handelt, wird sie nicht in node_modules von Projekt "A" installiert. Ohne manuelle Installation kann die Transpiler "C" -Lizenz nicht ordnungsgemäß bezogen werden, oder? Selbst wenn wir könnten, müssen wir auch nach Transpiler "C" -s-Abhängigkeiten / dev-Abhängigkeiten usw. usw. suchen.

In diesem hypothetischen Fall haben wir nur eine transitive Dev-Abhängigkeit, aber in realen Szenarien könnten es Hunderte sein. Es kann mehrere Versionen desselben Pakets geben, die als transitive Entwicklungsabhängigkeit in verschiedenen Paketen definiert sind. Durch die manuelle Installation von transitiven Dev-Abhängigkeiten zum Sammeln von Lizenzinformationen können diese transitiven Dev-Abhängigkeiten ihre eigenen Dev-Abhängigkeiten haben, die ebenfalls installiert werden müssen. Dieser Vorgang muss wiederholt werden, bis alle transitiven Dev-Abhängigkeiten aller transitiven Dev-Abhängigkeiten installiert sind.

Die Frage ist: Sollte ich mich darum kümmern, Lizenzinformationen über transitive Entwicklungsabhängigkeiten zu sammeln? Und wenn ich sollte, bis zu welchem ​​Punkt?

Ich kümmere mich bereits um regelmäßige transitive Abhängigkeiten, aber ich mache mir Sorgen um transitive Dev-Abhängigkeiten.

Antworten

5 amon Dec 23 2020 at 20:09

Dies ist ein wirklich kniffliges Szenario, weshalb automatisierte Tools zur Einhaltung von Lizenzbestimmungen nur so weit gehen können. Ihre Analyse scheint im Allgemeinen korrekt zu sein.

In der Praxis würde ich erwarten, dass die Lizenz von B nicht nur den ursprünglichen Quellcode von B, sondern auch den transpilierten Code von B abdeckt (zumindest wenn B in transpilierter Form verteilt wird). Dies würde das Problem der transitiven Entwicklungsabhängigkeiten sauber umgehen. Dies weist jedoch auf ein allgemeineres Problem hin: Lizenzmetadaten sind möglicherweise nicht korrekt, ein weiterer Grund, warum automatisierte Tools nur so weit gehen.

Wenn Sie ein Allzweck-Tool entwerfen, kann es hilfreich sein, eine Option hinzuzufügen , die auch die Analyse von Dev-Abhängigkeiten und transitiven Dev-Abhängigkeiten auslöst, indem Metadaten für die in den Paket-Metadaten genannten Tools abgerufen werden (keine Notwendigkeit, sie tatsächlich zu installieren). Standardmäßig würde ich nicht erwarten, dass Entwicklungsabhängigkeiten einen direkten Einfluss auf den Lizenzstatus haben (obwohl, wie Sie richtig erklären, insbesondere Polyfills diese Erwartung verletzen könnten).