
DESAFIOS DE DESENVOLVIMENTO DE SISTEMAS E TECNOLOGIA
Por que peerDependencies? (por que dependencias em pares?)
Não temos uma seção peerDependencies no package.json da nossa aplicação exemplo. Mas a própria angular tem uma seção peerDependencies em sua package.json e que tem consequências importantes para a nossa aplicação.
Ele explica por que carregar os pacotes polyfill de dependência na nossa package.json QuickStart, e por isso vamos precisar desses pacotes em nossas próprias aplicações.
Vamos explicar brevemente o que são dependências em pares:
Como sabemos, pacotes dependem de outros pacotes. Por exemplo, a nossa aplicação depende do pacote Angular.
Dois pacotes, 'A' e 'B', poderiam depender o mesmo terceiro pacote 'C'. 'A' e 'B' podem listar 'C' entre suas dependências.
E se 'A' e 'B' dependem de diferentes versões de 'C' ( 'C1' e 'C2')?
O sistema de pacotes NPM suporta isso! Ele instala 'C1' na pasta node_modules para 'A' e 'C2' na pasta node_modules para 'B'. Agora 'A' e 'B' têm as suas próprias cópias de 'C' e eles não interferem entre si. Isso é ótimo.
Mas há um problema!
Pacote 'A' pode exigir a presença de 'C1' sem realmente telo diretamente. 'A' só pode funcionar se todo mundo está usando 'C1'. Temos um problema se qualquer parte da aplicação depende de 'C2'.
A solução para 'A' é declarar que "C1" é uma dependência de pares, ou seja, ‘A’ diz a todos que querem usa-lo : "se você quer me usar, você precisa ter ‘C1’ disponível para você também, você tem que permitir que ‘C1’ faça parte de suas dependencias."
Em suma, a diferença entre uma dependência e uma peerDependency é mais ou menos o seguinte:
Uma dependência diz: "Eu preciso desta coisa diretamente disponível para mim."
A peerDependency diz, "se você quer me usar, você precisa desta coisa disponível para você."