Como visualizo o tamanho dos pacotes npm?

129

Ao procurar pacotes no NPM, gostaria de ver os tamanhos dos pacotes (em KB ou MB, etc). O NPM parece não mostrar essas informações.

Como posso determinar quanto inchaço um pacote NPM adicionará ao meu projeto?

arielorvits
fonte
Seqüestrar esta conversa porque gostaria de apontar para uma ferramenta que ajuda a reivindicar espaço livre da sua máquina. Aparentemente, node_modulesocupe atm 21bg na minha máquina; npkillpode ajudá-lo a fazer isso ! [insira a descrição da imagem aqui ] ( i.stack.imgur.com/BKbyU.png )
Ahmad Alfy

Respostas:

181

O que você provavelmente deseja avaliar é o impacto que um pacote tem para adicioná-lo ao pacote de aplicativos. A maioria das outras respostas estimará apenas o tamanho dos arquivos de origem, que podem ser imprecisos devido a comentários embutidos, nomes longos de var etc.

Há um pequeno utilitário que eu criei que informa o tamanho min + gzipped do pacote depois que ele entra no seu pacote -

https://bundlephobia.com

Shubham Kanodia
fonte
5
Obrigado! Esse é um utilitário muito bom!
BaronVonKaneHoffen
3
UI bonita! Graças a isso é exatamente o que eu estava procurando. Leva uma eternidade em pacotes super grandes.
protoEvangelion
3
@Black deve estar de volta
Shubham Kanodia
6
Este link: https://cost-of-modules.herokuapp.comagora direciona para https://bundlephobia.com Uma ferramenta muito útil entre.
Adam Weber
4
Isso é legal o suficiente para que ele deve apenas ser adicionada às páginas do MPN para cada pacote
eddiemoya
69

Dê uma olhada neste projeto de custo de módulos . É um pacote npm que lista o tamanho de um pacote e o número de filhos.

Instalação: npm install -g cost-of-modules

Uso: Execute cost-of-modulesno diretório em que você está trabalhando.

insira a descrição da imagem aqui

Liron Yahdav
fonte
2
Um pouco exagerado, ele precisa reinstalar todos os seus módulos antes do cálculo. Mas faz o trabalho.
Pdem 3/11
7
não use este pacote - ele cria uma pasta artefato chamado nodemodules.bak que cria efeitos colaterais feios
Nth.gol
22

Criei uma ferramenta, tamanho do download npm , que inspeciona o tamanho do tarball para um determinado pacote npm, incluindo todos os tarballs na árvore de dependência. Isso fornece uma idéia do custo (tempo de instalação, espaço em disco, recursos de tempo de execução, auditoria de segurança, ...) da adição da dependência antecipadamente.

tamanho do download do webpack

Na imagem acima, o tamanho do Tarball é tar.gz do pacote e o tamanho total é o tamanho de todos os tarballs. A ferramenta é bastante básica, mas faz o que diz.

Uma ferramenta CLI também está disponível. Você pode instalá-lo assim:

npm i -g download-size

E use-o assim:

$ download-size request
[email protected]: 1.08 MiB

O código fonte está disponível no Github: api , cli tool e web client .

arve0
fonte
20

Criei o Package Phobia no início deste ano com a esperança de obter as informações sobre o tamanho do pacote no npmjs.com e também acompanhar o inchaço do pacote ao longo do tempo.

https://packagephobia.com

img

Isso foi desenvolvido para medir o espaço em disco após a execução npm installde dependências do lado do servidor, como expressdependências do dev jest.

Você pode ler mais sobre esta ferramenta e outras ferramentas semelhantes no leia-me aqui: https://github.com/styfle/packagephobia


Atualização 2020

O "Tamanho descompactado" (basicamente tamanho de publicação) está disponível no site npmjs.com, juntamente com o "Total de arquivos". No entanto, esse não é um significado recursivo que npm installprovavelmente será muito maior porque um único pacote provavelmente depende de muitos pacotes (portanto, o Package Phobia ainda é relevante).

Há também um RFC pendente para um recurso que imprime essas informações a partir da CLI.

styfle
fonte
Isso é ótimo, mas por que seus resultados diferem tão acentuadamente da bundlephobia? por exemplo, compare os resultados para lodash.lowerfirst #
Danyal Aytekin 25/10/18
2
@DanyalAytekin Porque eles estão medindo coisas diferentes. Resposta curta: se você estiver procurando um pacote front-end, use BundlePhobia. Se você estiver procurando por um pacote de back-end, use PackagePhobia. Há mais detalhes no leia-me se você estiver interessado.
styfle
16

Caso você esteja usando o webpack como seu bundler de módulo, consulte:

Definitivamente, recomendo a primeira opção. Ele mostra o tamanho no mapa da árvore interativo. Isso ajuda você a encontrar o tamanho do pacote no seu arquivo em pacote.

Analisador de Pacotes Webpack

As outras respostas nesta postagem mostram o tamanho do projeto, mas você pode não estar usando todas as partes do projeto, por exemplo, com trepidação de árvores. Outras abordagens podem não mostrar o tamanho exato.

Preto
fonte
4

Se você usar o Código do Visual Studio, poderá usar uma extensão chamada Custo de Importação .

Esta extensão exibirá em linha no editor o tamanho do pacote importado. A extensão utiliza o webpack com o babili-webpack-plugin para detectar o tamanho importado.

kyw
fonte
Também disponível para WebStorm.
JoeTidee
Esta extensão não funciona para todos os pacotes. Ele mostra Calculating ... e, de repente, desaparece mesmo depois de alterar o valor do tempo limite para um número muito grande
shreyansh 23/01
2

Você pode conferir o npm-module-stats . É um módulo npm que obtém o tamanho de um módulo npm e suas dependências sem instalar ou fazer download do módulo.

Uso:

var stats = require("npm-module-stats");

stats.getStats("glob").then((stack) => {

  let dependencies = Object.keys(stack);
  let totalSize = dependencies.reduce((result, key, index) => {
    return result + stack[key].size;
  }, 0);

  console.log('Total Size in Bytes ', totalSize);
  console.log('Total Dependencies ', dependencies.length-1);

}).catch((err) => {
  console.error(err);
});

Pode parecer um pouco detalhado, mas resolve o problema que você descreveu adequadamente.

bkk
fonte
1
E os deps de segundo nível?
Sharikov Vladislav 4/09/17
2

Uma maneira "rápida e suja" é usar curl e wzrd.in para baixar rapidamente o pacote minificado e depois cumprimentar o tamanho do arquivo:

curl -i https://wzrd.in/standalone/axios@latest | grep Content-Length

O download é reduzido, mas não compactado, mas você tem uma boa idéia do tamanho relativo dos pacotes quando compara dois ou mais deles.

thoragio
fonte
2
Bem, use outro serviço como unpkg.com então. Exemplo:curl -i https://unpkg.com/[email protected]/dist/axios.min.js | grep Content-Length
thoragio
2

howfat é mais uma ferramenta que pode mostrar o tamanho total do pacote:

npx howfat jasmine

screensot

Alexey Prokhorov
fonte