Comment afficher la taille des packages npm?


129

Lorsque je recherche des packages sur NPM, j'aimerais voir la taille des packages (en Ko ou Mo, etc.). NPM ne semble pas afficher ces informations.

Comment puis-je déterminer la quantité de ballonnements qu'un package NPM ajoutera à mon projet?


Détourner cette conversation parce que je voudrais signaler un outil qui permet de réclamer de l'espace libre sur votre machine. Apparemment node_modulesoccuper 21bg atm sur ma machine; npkillpeut vous aider à le faire ! [entrez la description de l'image ici ] ( i.stack.imgur.com/BKbyU.png )
Ahmad Alfy

Réponses:


181

Ce que vous voulez probablement mesurer, c'est l'impact d'un package si vous l'ajoutez à votre ensemble d'applications. La plupart des autres réponses estiment uniquement la taille des fichiers source, ce qui peut être inexact en raison de commentaires en ligne, de longs noms de var, etc.

Il y a un petit utilitaire que j'ai créé qui vous indiquera la taille min + gzippée du paquet une fois qu'il est entré dans votre paquet -

https://bundlephobia.com


5
Merci! C'est un très bon util!
BaronVonKaneHoffen

3
Belle interface utilisateur! Merci c'est exactement ce que je cherchais. Prend une éternité sur des paquets très volumineux.
protoEvangelion

3
@Black devrait être de retour
Shubham Kanodia

6
Ce lien: https://cost-of-modules.herokuapp.comdirige maintenant vers https://bundlephobia.com Un outil très utile btw.
Adam Weber

4
C'est assez cool qu'il devrait simplement être ajouté aux pages npm pour chaque paquet
eddiemoya

69

Jetez un œil à ce projet de coût des modules . C'est un package npm qui listera la taille d'un package et le nombre d'enfants.

Installation: npm install -g cost-of-modules

Utilisation: exécutez cost-of-modulesdans le répertoire dans lequel vous travaillez.

entrez la description de l'image ici


2
Un peu exagéré, il faut réinstaller tous vos modules avant le calcul. Mais fait le travail.
pdem

7
n'utilisez pas ce package - il crée un dossier d'artefacts appelé nodemodules.bak qui crée des effets secondaires horribles
Nth.gol

22

J'ai créé un outil, npm download size , qui inspecte la taille de l'archive tar pour un package npm donné, y compris toutes les archives tar de l'arborescence des dépendances. Cela vous donne une idée du coût (temps d'installation, espace disque, ressources d'exécution, audit de sécurité, ...) d'ajout de la dépendance à l'avance.

télécharger la taille du webpack

Dans l'image ci-dessus, la taille de Tarball est tar.gz du package, et la taille totale est la taille de toutes les tarballs. L'outil est assez basique, mais il fait ce qu'il dit.

Un outil cli est également disponible. Vous pouvez l'installer comme ceci:

npm i -g download-size

Et utilisez-le comme ceci:

$ download-size request
request@2.83.0: 1.08 MiB

Le code source est disponible sur Github: api , outil cli et client web .


20

J'ai créé Package Phobia au début de cette année avec l'espoir d'obtenir les informations sur la taille du paquet sur npmjs.com et de suivre également le gonflement des paquets au fil du temps.

https://packagephobia.com

img

Ceci est conçu pour mesurer l'espace disque après avoir exécuté npm installdes dépendances côté serveur comme expressou des dépendances de développement comme jest.

Vous pouvez en savoir plus sur cet outil et d'autres outils similaires dans le readme ici: https://github.com/styfle/packagephobia


Mise à jour 2020

La "Taille Unpacked" (essentiellement Publish Size) est disponible sur le site Web npmjs.com avec "Total Files". Cependant, ce n'est pas une signification récursive qui npm installsera probablement beaucoup plus grande car un seul paquet dépend probablement de nombreux paquets (donc Package Phobia est toujours pertinent).

Il existe également un RFC en attente pour une fonctionnalité qui imprime ces informations à partir de l'interface de ligne de commande.


C'est génial, mais pourquoi ses résultats diffèrent-ils si nettement de ceux de la bundlephobie? Par exemple, comparez les résultats pour lodash.lowerfirst
Danyal Aytekin

2
@DanyalAytekin Parce qu'ils mesurent des choses différentes. Réponse courte: si vous recherchez un package frontal, utilisez BundlePhobia. Si vous recherchez un package back-end, utilisez PackagePhobia. Il y a plus de détails dans le readme si vous êtes intéressé.
styfle

16

Si vous utilisez webpack comme bundle de modules, jetez un œil à:

Je recommande vraiment la première option. Il montre la taille dans le treemap interactif. Cela vous aide à trouver la taille du package dans votre fichier groupé.

Analyseur de bundle Webpack

Les autres réponses de cet article vous montrent la taille du projet, mais vous n'utilisez peut-être pas toutes les parties du projet, par exemple avec le tremblement de l'arbre. D'autres approches pourraient alors ne pas vous montrer la taille exacte.



4

Si vous utilisez Visual Studio Code, vous pouvez utiliser une extension appelée Import Cost .

Cette extension affichera en ligne dans l'éditeur la taille du package importé. L'extension utilise webpack avec babili-webpack-plugin afin de détecter la taille importée.


Également disponible pour WebStorm.
JoeTidee

Cette extension ne fonctionne pas pour tous les packages. Il montre Calculer ... puis disparaît soudainement même après avoir changé la valeur du délai d'expiration en un très grand nombre
shreyansh

2

Vous pouvez consulter npm-module-stats . C'est un module npm qui obtient la taille d'un module npm et ses dépendances sans installer ni télécharger le module.

Usage:

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);
});

Cela peut sembler un peu verbeux, mais cela résout le problème que vous avez décrit de manière appropriée.


1
Et les déps de 2e niveau?
Sharikov Vladislav

2

Une manière "rapide et sale" consiste à utiliser curl et wzrd.in pour télécharger rapidement le paquet minifié, puis grep la taille du fichier:

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

Le téléchargement est minifié mais pas gzippé, mais vous avez une bonne idée de la taille relative des packages lorsque vous comparez deux ou plusieurs d'entre eux.


2
Eh bien, utilisez un autre service comme unpkg.com alors. Exemple:curl -i https://unpkg.com/axios@0.16.1/dist/axios.min.js | grep Content-Length
thoragio

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.