¿Cómo veo el tamaño de los paquetes npm?

129

Cuando busco paquetes en NPM, me gustaría ver los tamaños de los paquetes (en KB o MB, etc.). NPM no parece mostrar esta información.

¿Cómo puedo determinar cuánta hinchazón agregará un paquete NPM a mi proyecto?

arielorvits
fuente
Secuestrando esta conversación porque me gustaría señalar una herramienta que ayuda a reclamar espacio libre de su máquina. Aparentemente node_modulesocupo cajeros automáticos 21bg en mi máquina; npkillpuede ayudarlo a hacer eso [ingrese la descripción de la imagen aquí ] ( i.stack.imgur.com/BKbyU.png )
Ahmad Alfy

Respuestas:

181

Lo que probablemente quiera medir es el impacto que tiene un paquete si lo agrega a su paquete de aplicaciones. La mayoría de las otras respuestas solo estimarán el tamaño de los archivos de origen, que pueden ser inexactos debido a comentarios en línea, nombres largos de var, etc.

Hice una pequeña utilidad que le dirá el tamaño min + gzipped del paquete después de que entre en su paquete:

https://bundlephobia.com

Shubham Kanodia
fuente
55
¡Gracias! Esa es una muy buena utilidad!
BaronVonKaneHoffen
3
Hermosa interfaz de usuario! Gracias, esto es exactamente lo que estaba buscando. Sin embargo, lleva una eternidad en paquetes súper grandes.
protoEvangelion
3
@Black Debería estar de regreso
Shubham Kanodia
66
Este enlace: https://cost-of-modules.herokuapp.comahora dirige a https://bundlephobia.com Una herramienta muy útil por cierto.
Adam Weber
44
Esto es lo suficientemente genial como para que solo se agregue a las páginas npm para cada paquete
eddiemoya
69

Eche un vistazo a este proyecto de costo de módulos . Es un paquete npm que enumerará el tamaño de un paquete y la cantidad de hijos.

Instalación: npm install -g cost-of-modules

Uso: Ejecútelo cost-of-modulesen el directorio en el que está trabajando.

ingrese la descripción de la imagen aquí

Liron Yahdav
fuente
2
Un poco exagerado, necesita reinstalar todos sus módulos antes del cálculo. Pero hace el trabajo.
pdem
77
no use este paquete: crea una carpeta de artefactos llamada nodemodules.bak que crea efectos secundarios feos
Nth.gol
22

Creé una herramienta, npm download size , que inspecciona el tamaño del tarball para un paquete npm dado, que incluye todos los tarballs en el árbol de dependencias. Esto le da una idea del costo (tiempo de instalación, espacio en disco, recursos de tiempo de ejecución, auditoría de seguridad, ...) de agregar la dependencia por adelantado.

tamaño de descarga del paquete web

En la imagen de arriba, el tamaño del tarball es tar.gz del paquete, y el tamaño total es el tamaño de todos los tarballs. La herramienta es bastante básica, pero hace lo que dice.

Una herramienta cli también está disponible. Puedes instalarlo así:

npm i -g download-size

Y úsalo así:

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

El código fuente está disponible en Github: api , herramienta cli y cliente web .

arve0
fuente
20

Creé Package Phobia a principios de este año con la esperanza de obtener la información del tamaño del paquete en npmjs.com y también rastrear la hinchazón del paquete con el tiempo.

https://packagephobia.com

img

Esto está diseñado para medir el espacio en disco después de ejecutar npm installdependencias del lado del servidor expresso dependencias de desarrollo como jest.

Puede leer más sobre esta herramienta y otras herramientas similares en el archivo Léame aquí: https://github.com/styfle/packagephobia


Actualización 2020

El "Tamaño desempaquetado" (básicamente Tamaño de publicación) está disponible en el sitio web npmjs.com junto con "Archivos totales". Sin embargo, esto no es un significado recursivo que npm installprobablemente sea mucho más grande porque un solo paquete probablemente depende de muchos paquetes (por lo tanto, Package Phobia sigue siendo relevante).

También hay un RFC pendiente para una función que imprime esta información desde la CLI.

Styfle
fuente
Esto es genial, pero ¿por qué sus resultados difieren tan marcadamente de la faringe? por ejemplo, compare los resultados de lodash.lowerfirst
Danyal Aytekin el
2
@DanyalAytekin Porque están midiendo cosas diferentes. Respuesta corta: si está buscando un paquete front-end, use BundlePhobia. Si está buscando un paquete de back-end, use PackagePhobia. Hay más detalles en el archivo Léame si está interesado.
styfle
16

En caso de que esté utilizando webpack como paquete de módulos, eche un vistazo a:

Definitivamente recomiendo la primera opción. Muestra el tamaño en el mapa de árbol interactivo. Esto le ayuda a encontrar el tamaño del paquete en su archivo incluido.

Analizador de paquetes Webpack

Las otras respuestas en esta publicación muestran el tamaño del proyecto, pero es posible que no esté utilizando todas las partes del proyecto, por ejemplo, con sacudidas de árboles. Otros enfoques podrían no mostrarle el tamaño exacto.

Negro
fuente
4

Si usa Visual Studio Code, puede usar una extensión llamada Import Cost .

Esta extensión mostrará en línea en el editor el tamaño del paquete importado. La extensión utiliza webpack con babili-webpack-plugin para detectar el tamaño importado.

kyw
fuente
También disponible para WebStorm.
JoeTidee
Esta extensión no funciona para todos los paquetes. Muestra Calculando ... y luego desaparece repentinamente incluso después de cambiar el valor de tiempo de espera a un número muy grande
shreyansh
2

Puede consultar npm-module-stats . Es un módulo npm que obtiene el tamaño de un módulo npm y sus dependencias sin instalar o descargar el 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);
});

Puede parecer un poco detallado, pero resuelve el problema que describió adecuadamente.

bkk
fuente
1
¿Qué pasa con los departamentos de segundo nivel?
Sharikov Vladislav
2

Una forma "rápida y sucia" es usar curl y wzrd.in para descargar rápidamente el paquete minimizado y luego seleccionar el tamaño del archivo:

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

La descarga se minimiza pero no se comprime, pero tiene una buena idea del tamaño relativo de los paquetes cuando compara dos o más de ellos.

thoragio
fuente
2
Bueno, entonces usa otro servicio como unpkg.com . Ejemplo:curl -i https://unpkg.com/[email protected]/dist/axios.min.js | grep Content-Length
thoragio
2

howfat es una herramienta más que puede mostrar el tamaño total del paquete:

npx howfat jasmine

pantallazo

Alexey Prokhorov
fuente