top of page
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ê."

bottom of page