Gerentes de pacotes JavaScript comparados: fios, pnpm ou pnpm?

no desenvolvimento de aplicações modernas, nós não escrevemos tudo do zero. Em vez disso, preferimos usar os pacotes de código aberto existentes. Cada um destes pacotes tem seus próprios mantenedores e comunidade. Então, usar um pacote em nossos projetos nos dá algumas vantagens como desenvolvimento mais rápido, acesso a novas atualizações regulares e melhor segurança do que script criado sob medida.

é comum que um pacote depende de muitos outros pacotes para funcionar corretamente. Similarmente lodash lodash também pode depender de algo como lodash, mas o lodash depende de vários pacotes também. Em outras palavras, as dependências aninhadas podem às vezes tornar-se tão complexas que elas são incapazes de lidar com a gestão de dependências manualmente.

aqui é quando um gerenciador de pacotes é extremamente útil. Gerentes de pacotes são ferramentas que lidam automaticamente com as dependências de um projeto.

Por exemplo, um gestor de pacotes pode instalar pacotes novos OU Actualizar pacotes existentes com um único comando. Porque tudo é automatizado, por isso não há hipótese de erro humano. Como desenvolvedores de JavaScript, temos acesso a vários gerentes de pacotes. Mas, neste guia, vamos comparar os três mais populares:

  • npm
  • Fio
  • pnpm)

Visão geral dos gerenciadores de pacotes

a ngp foi o primeiro gerenciador de pacotes para introduzir os conceitos de registro de protocolo e normas de embalagem. Foi lançado em 2010 e oficialmente adotado pelo Node.a equipe js pouco depois, que foi o ponto de viragem para o npm.

Após o sucesso massivo do nó.js, npm também recebeu tração da Comunidade do desenvolvedor. Ele oferece um registro online para pacotes JavaScript, bem como uma ferramenta de linha de comando que trabalha com o registro para instalar e atualizar dependências.

mas existem poucas desvantagens do npm que desencadearam o desenvolvimento de fios e pnpm. Por exemplo, npm é significativamente mais lento do que suas contrapartes. Ele também tem um histórico de graves vulnerabilidades de segurança.então, grandes empresas de tecnologia como o Facebook e o Google estavam hesitantes em continuar usando o npm. Por sua vez, eles juntaram esforços para desenvolver uma melhor versão do npm e chamá-lo de fio. Enquanto isso, o desenvolvedor ucraniano Zoltan Kochan desenvolveu pnpm.

características de MPN, fio e pnpm

todos estes gestores de pacotes são de código aberto, o que significa que você tem acesso total para verificar o funcionamento interno de cada um. Por vezes, isto é mesmo um requisito no desenvolvimento de aplicações a nível de empresa.

benefícios do MPN:

  1. gera automaticamente um package-lock.json ficheiro. É útil para se comprometer com um sistema de controle de versão. Desta forma, outros desenvolvedores podem facilmente instalar as dependências em suas máquinas locais
  2. Gerir local ou global de dependências com facilidade
  3. npm está bem equipado para lidar com múltiplas versões das dependências
  4. Ele tem um registro oficial que tem mais pacotes do que o pypi, nmdiz, ou packagist

os Benefícios do Fio:

  1. Fio corrige vários problemas que aparecem em uma Monorepo. Por exemplo, se está a manter múltiplas pacotes sob o mesmo repositório e todos eles têm uma separada package.json arquivo, você pode atualizar todos os pacotes facilmente com Fios, graças ao seu conceito de espaços de trabalho que pode instalar as dependências de todos os pacotes de um repositório, todos de uma só vez. Com o MPN, terá de executar manualmente o comando npm install dentro de cada pasta de pacotes.
  2. O fio faz uso de um mecanismo de cache offline, o que significa que quando você instalar um pacote pela primeira vez, o fio adiciona-o a uma pasta de cache em ~/.yarn-cache. Então, da próxima vez que você precisar deste pacote, O fio vai recuperá-lo a partir do cache local, em vez de fazer um pedido HTTP para o servidor. Esta pequena melhoria aumenta significativamente o desempenho do fio em comparação com npm
  3. fio também faz uso de um arquivo de bloqueio chamado yarn.lock, de modo que seus projetos irão funcionar corretamente para todos os companheiros de equipe. Este conceito também é referido como um algoritmo de instalação determinística
  4. É embalado com um controlador de licença embutido que pode ser útil em diferentes cenários quando você está desenvolvendo aplicações
  5. Ao contrário de npm, fio usa uma abordagem chamada downloads paralelos. Ele permite que o fio utilize mais recursos para acelerar o processo de compilação
  6. Ele pode automaticamente repetir o pedido HTTP em caso de falha. Este recurso é particularmente útil quando você está enfrentando problemas temporários na internet

benefícios do pnpm:

  1. é compatível com o MPN, mas também oferece uma utilização significativamente melhor do espaço em disco e velocidade
  2. pnpm instala todos os pacotes em um único local e, em seguida, usa ligações simbólicas para referenciá-los. Ele introduz um conceito completamente novo chamado de um sistema de armazenamento de conteúdo-endereçável que permite que o pnpm detecte a diferença entre os arquivos. Por sua vez, ele não duplica arquivos inalterados em duas versões diferentes de um pacote
  3. sua última versão, 5.8.0, introduz um novo Fio-bash-como a definição de chamada de shell-emulator, uma cruz-plataforma de ambiente do shell
  4. pnpm tem um rigoroso mecanismo de controle de acesso, o que significa que um pacote pode acessar apenas as dependências que são definidas no seu package.json ficheiro

gerenciador de Pacotes comparação

Facilidade de uso

a ngp, Fios, e pnpm oferecer quase idênticos comandos para suas diferentes operações, e são todos de fácil utilização. Aqui está um exemplo de seus comandos comumente usados:

npm Fio pnpm)
npm install fios de instalar pnpm instalar
npm atualização fio de atualização pnpm atualização

Velocidade

Não há nenhuma correspondência para pnpm quando ele vem para a velocidade e o desempenho destes gerenciadores de pacotes. De acordo com uma referência de diferentes casos de uso, o pnpm mostrou velocidades de desempenho até 3x mais rápidas que o npm.as velocidades do fio e do npm são comparáveis. Em alguns casos, o fio tem uma vantagem significativa sobre o npm, mas há cenários onde o npm é uma escolha mais adequada. Por exemplo, se executar uma operação de instalação por apenas usando node_modules e ignorar cache e lock file funcionalidade e, em seguida, a ngp poderia oferecer 5x melhor velocidade. Da mesma forma, se usarmos todas as três funcionalidades, então o fio pode aumentar o seu desempenho e se torna 11x mais rápido do que o npm.

segurança

a principal vantagem do fio sobre o npm é que ele verifica a integridade de cada pacote usando códigos de validação. O processo de verificação é feito antes de executar qualquer código do pacote, então ele elimina qualquer chance de seqüestro de vulnerabilidade pacote.

Por outro lado, npm é um pouco mais indulgente quando se trata de trabalhar com pacotes ruins. Continua a evoluir para oferecer as melhores práticas em matéria de segurança. Mas, o MPN geralmente tem uma má reputação em termos de segurança.no passado, houve algumas vulnerabilidades de segurança no MPN que afetaram diretamente muitos projetos. Por exemplo, em npm versão 5.7.0, quando você executar sudo npm comando em um sistema operacional baseado em Linux (sistema operacional), havia uma possibilidade de alterar a propriedade de arquivos do sistema, tornando o sistema operacional inutilizável.da mesma forma, outro incidente de roubar bitcoins aconteceu em 2018. Basicamente, o nó popular.js package EventStream adicionou uma dependência maliciosa flatmap-stream em sua versão 3.3.6. Este pacote malicioso foi embalado com uma carga criptografada que tenta roubar bitcoins da máquina do desenvolvedor.

pnpm combina os atributos positivos tanto do MPN como do fio para proporcionar uma segurança ainda melhor. Ele também implementa um mecanismo de controle de acesso estrito que liga um pacote para apenas usar suas próprias dependências que são definidas em seu arquivo package.json.estabilidade npm, fios e pnpm passaram por várias fases nos últimos anos. Com o tempo, sua base de código amadureceu porque eles receberam toneladas de contribuições da comunidade de código aberto.

e, com o passar do tempo, surgem novos conceitos e ideias que podem introduzir mudanças de ruptura. No momento de escrever este guia, todos estes gestores de pacotes estão em boa forma e você pode usá-los em seus projetos sem quaisquer problemas.

fio é suportado pelo Facebook e Google, npm é suportado pela Microsoft e Node.js, e pnpm é desenvolvido principalmente por um indivíduo, embora agora tenha 75 contribuidores — então você pode depender desses gerentes de pacotes para criar seu próximo projeto.

Suporte para monorepos

Monorepos são principalmente preferidos por grandes empresas de tecnologia para armazenar e gerenciar seus maciço antigo. o npm foi concebido apenas para gerir projectos individuais. A partir de agora, ele não tem nenhuma funcionalidade para suportar monorepos. Mas ambos os fios e pnpm têm apoio completo para monorepos, graças ao seu conceito de espaços de trabalho.

Deterministic-o ficheiro de bloqueio

todos os três gestores de pacotes são embalados com a funcionalidade do ficheiro de bloqueio. Ele permite que diferentes desenvolvedores instalem exatamente a mesma cópia do projeto. o npm usa um arquivopackage-lock.json, O fio usa yarn.lock, e o pnpm usa pnpm-lock.yaml.

conclusão

Se está à procura de uma solução que lhe dê uma melhor velocidade e uma utilização eficiente da memória, deve considerar fortemente a utilização do pnpm.se estiver a manipular monorepos, pode utilizar o pnpm ou o fio para o fazer. No entanto, tenha em mente que o fio envia dados de uso para o Facebook, que pode não fazer o fio uma escolha adequada em alguns cenários.o fio também não suporta a versão 5 do nó.js. Neste sentido, npm é uma opção preferida para nó.js-based projects because it is recommended by the Node.equipa js. Hoje em dia, Nodo.js vem com npm por padrão.

com o npm, você deve considerar a sua história com problemas de segurança, que desencadeou o desenvolvimento de fios, que também foi criado para resolver muitos emissores que estavam presentes no npm. Então, se você está preocupado com a segurança de seus projetos, considere usar fio em vez de npm.

LogRocket: Debug erros de JavaScript mais fáceis ao compreender o contexto

código de depuração é sempre uma tarefa tediosa. Mas quanto mais você entender seus erros, mais fácil é corrigi-los.

LogRocket permite-lhe compreender estes erros de formas novas e únicas. Nossa solução de monitoramento frontend acompanha o engajamento do usuário com suas frontends JavaScript para lhe dar a capacidade de descobrir exatamente o que o usuário fez que levou a um erro.

Logrocket Dashboard Free Trial Banner

LogRocket records console logs, page load times, stacktraces, slow network requests / responses with headers + bodies, browser metadata, and custom logs. Compreender o impacto do seu código JavaScript nunca será mais fácil!

tente de graça.

Related Posts

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *