Dois-je attribuer une attribution aux dépendances de développement transitives?
Je travaille sur une bibliothèque / outil cli pour regrouper les licences de dépendance dans un seul fichier. À l' heure actuelle, je suis en train de collecter des licences de: dépendances directes, transitif dépendances et directes dev -dependencies .
En d'autres termes, j'essaie de collecter des licences de packages, qui sont installés dans node_modules. Les dépendances de développement transitives ne sont pas installées par le gestionnaire de packages, en raison de la nature même des dépendances de développement.
Je m'inquiète de savoir si des parties de code de ces dépendances transitives peuvent être incluses dans les packages installés.
Par exemple: le projet "A" dépend du package "B". Le package "B" a Transpiler "C" comme dépendance de développement. Le code généré par Transpiler "C" dans le package "B" comprend non seulement un simple résultat de transpilation, mais aussi un polyfill pour une fonction, qui n'est pas disponible dans les anciens navigateurs, de Transpiler "C". Mais, comme Transpiler "C" est une dépendance de développement transitive, il n'est pas installé dans node_modules du projet "A", donc sans l'installer manuellement, la licence Transpiler "C" -s ne peut pas être obtenue correctement, n'est-ce pas? Même si nous le pouvions, nous devrons rechercher les dépendances / dev-dépendances de Transpiler "C" aussi, etc., etc.
Dans ce cas hypothétique, nous n'avons qu'une seule dépendance de développement transitive, mais, dans les scénarios du monde réel, il pourrait y en avoir des centaines. Il peut y avoir plusieurs versions du même package définies comme une dépendance de développement transitive dans différents packages. En installant manuellement les dépendances de développement transitives pour collecter les informations de licence, ces dépendances de développement transitives pourraient avoir leurs propres dépendances de développement, qui devront également être installées. Ce processus devra être répété jusqu'à ce que toutes les dépendances de développement transitives de toutes les dépendances de développement transitives soient installées.
La question est: Dois-je prendre soin de collecter des informations de licence sur les dépendances de développement transitives? Et si je devais, à quel point?
Je me soucie déjà des dépendances transitives régulières, mais je m'inquiète pour les dépendances transitives de développement.
Réponses
Il s'agit d'un scénario vraiment délicat, c'est pourquoi les outils de conformité de licence automatisés ne peuvent aller plus loin. Votre analyse semble généralement correcte.
En pratique, je m'attendrais à ce que la licence de B ne couvre pas seulement le code source original de B, mais aussi le code transpilé de B (du moins si B est distribué sous forme transpilée). Cela éviterait parfaitement le problème des dépendances de développement transitives. Cependant, cela indique un problème plus général: les métadonnées de licence peuvent ne pas être exactes, une autre raison pour laquelle les outils automatisés ne vont que si loin.
Si vous concevez un outil à usage général, il peut être utile d'ajouter une option qui déclenche également l'analyse des dépendances de développement et des dépendances de développement transitives, en récupérant les métadonnées des outils mentionnés dans les métadonnées du package (pas besoin de les installer). Par défaut, je ne m'attendrais pas à ce que les dépendances dev aient un effet direct sur l'état de la licence (bien que, comme vous l'expliquez correctement, les polyfills en particulier pourraient violer cette attente).