Em cada projeto de aplicação web baseado em Node.js, temos um arquivo chamado package.json. Este arquivo contém todos os dados relevantes sobre o projeto, ou seja, metadados. Três tipos de dependência diferentes podem ser definidos em package.json: dependência, devDependency e Peer Dependency.
Este artigo descreve alguns cenários de uso comuns para dependência de pares.
-
Plugins Babel: No desenvolvimento de plugins Babel, o próprio Babel precisa ser definido como uma dependência de pares.
-
Pacotes de middleware expressos: este é um cenário típico de desenvolvimento de módulo NPM que requer o uso de dependências ponto a ponto. O desenvolvedor do pacote de middleware deseja declarar express como uma dependência, não como uma
硬
dependência. Caso contrário, cada instalação de cada pacote de middleware instalará o expresso inteiro na pasta node_modules. -
Se você estiver criando um micro frontend, precisará determinar quais dependências são externas (para que não sejam empacotadas) e quais não são. As dependências ponto a ponto podem ser uma solução opcional para esse problema.
todo o quadro. -
Componentes Bit: Se você estiver escrevendo e publicando componentes front-end, como ao compartilhar componentes React no Bit. Nesse caso, o React pode ser declarado como uma dependência de peer do componente, com a semântica de que o desenvolvedor espera que o projeto host tenha a versão correta especificada pela dependência de peer.
Veja um exemplo prático, um botão que pode ser clicado repetidamente:
Após a instalação, observe a dependência de peer definida em seu package.json:
Neste arquivo package.json, este pacote não define nenhuma dependência direta, mesmo que funcione em cima do React. Garantimos que coisas como React e React-dom sejam necessárias, mas não instaladas. Essa é a semântica que as dependências ponto a ponto do NPM devem expressar.
Dada a flexibilidade da arquitetura baseada em plug-ins, muitas bibliotecas estão se aproveitando dela, permitindo que os desenvolvedores estendam organicamente a funcionalidade do framework de acordo com suas necessidades. Isso torna necessário que qualquer desenvolvedor interessado em desenvolver novos recursos para esses frameworks domine o uso adequado de Peer Dependency.