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?


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


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


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
request@2.83.0: 1.08 MiB

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


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.


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.



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.


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.


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.


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

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.