Jak wyświetlić rozmiar pakietów npm?

129

Kiedy szukam pakietów w NPM, chciałbym zobaczyć rozmiary pakietów (w KB lub MB itp.). NPM nie wydaje się pokazywać tych informacji.

Jak mogę określić, ile nadużyć pakiet NPM doda do mojego projektu?

arielorvits
źródło
Przejmuję tę rozmowę, ponieważ chciałbym wskazać narzędzie, które pomaga odzyskać wolne miejsce na twoim komputerze. Najwyraźniej node_moduleszajmują 21bg atm na moim komputerze; npkillmoże Ci w tym pomóc ! [wprowadź opis obrazu tutaj ] ( i.stack.imgur.com/BKbyU.png )
Ahmad Alfy,

Odpowiedzi:

181

Prawdopodobnie chcesz zmierzyć wpływ pakietu, jeśli dodasz go do pakietu aplikacji. Większość innych odpowiedzi szacuje tylko rozmiar plików źródłowych, które mogą być niedokładne z powodu komentarzy w wierszu, długich nazw zmiennych itp.

Jest małe narzędzie, które stworzyłem, które powie ci min + gzip rozmiar pakietu po tym, jak dostanie się do twojego pakietu -

https://bundlephobia.com

Shubham Kanodia
źródło
5
Dzięki! To naprawdę fajne narzędzie!
BaronVonKaneHoffen
3
Piękny interfejs użytkownika! Dzięki temu właśnie tego szukałem. Jednak w przypadku bardzo dużych paczek trwa to wieczność.
protoEvangelion
3
@Black Powinien być z powrotem
Shubham Kanodia
6
Ten link: https://cost-of-modules.herokuapp.comteraz kieruje do https://bundlephobia.com bardzo przydatnego narzędzia przy okazji.
Adam Weber,
4
To jest na tyle fajne, że należy go po prostu dodać do stron npm dla każdego pakietu
eddiemoya
69

Spójrz na ten projekt kosztu modułów . Jest to pakiet npm, który podaje rozmiar pakietu i liczbę dzieci.

Instalacja: npm install -g cost-of-modules

Sposób użycia: Uruchom cost-of-modulesw katalogu, w którym pracujesz.

wprowadź opis obrazu tutaj

Liron Yahdav
źródło
2
Trochę przesada, trzeba ponownie zainstalować wszystkie moduły przed obliczeniami. Ale spełnia swoje zadanie.
pdem
7
nie używaj tego pakietu - tworzy folder artefaktów o nazwie nodemodules.bak, który tworzy brzydkie efekty uboczne
Nth.gol
22

Stworzyłem narzędzie, rozmiar pobierania npm , które sprawdza rozmiar tarballa dla danego pakietu npm, włączając w to wszystkie tarballe w drzewie zależności. Daje to wyobrażenie o koszcie (czas instalacji, miejsce na dysku, zasoby wykonawcze, audyt bezpieczeństwa, ...) dodania zależności z góry.

rozmiar pobierania pakietu internetowego

Na powyższym obrazku rozmiar Tarball to tar.gz pakietu i Całkowity rozmiar to rozmiar wszystkich archiwów. Narzędzie jest dość proste, ale robi to, co mówi.

Dostępne jest również narzędzie CLI . Możesz to zainstalować w ten sposób:

npm i -g download-size

I użyj tego w ten sposób:

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

Kod źródłowy jest dostępny na Github: api , narzędzie CLI i klient sieciowy .

arve0
źródło
20

Utworzyłem Package Phobia na początku tego roku z nadzieją, że informacje o rozmiarze paczki pojawią się na npmjs.com, a także śledzę rozrost paczek w czasie.

https://packagephobia.com

img

Ma to na celu pomiar miejsca na dysku po uruchomieniu npm installdla zależności po stronie serwera, takich jak expresslub zależności deweloperskie, takie jakjest .

Możesz przeczytać więcej o tym narzędziu i innych podobnych narzędziach w pliku readme tutaj: https://github.com/styfle/packagephobia


Zaktualizuj 2020

„Rozmiar po rozpakowaniu” (w zasadzie rozmiar do opublikowania) jest dostępny w witrynie npmjs.com wraz z pozycją „Całkowita liczba plików”. Jednak nie jest to rekurencyjne, co oznacza, żenpm install prawdopodobnie będzie znacznie większe, ponieważ pojedynczy pakiet prawdopodobnie zależy od wielu pakietów (dlatego fobia pakietu jest nadal aktualna).

Istnieje również oczekujący dokument RFC dotyczący funkcji, która drukuje te informacje z interfejsu CLI.

styfle
źródło
To świetnie, ale dlaczego jego wyniki różnią się tak znacznie od bundlefobii? np. porównaj wyniki dla lodash.lowerfirst
Danyal Aytekin
2
@DanyalAytekin Ponieważ mierzą różne rzeczy. Krótka odpowiedź: jeśli szukasz pakietu front-end, użyj BundlePhobia. Jeśli szukasz pakietu zaplecza, użyj PackagePhobia. Więcej szczegółów można znaleźć w pliku readme, jeśli jesteś zainteresowany.
styfle
16

Jeśli używasz webpacka jako pakietu modułów, spójrz na:

Zdecydowanie polecam pierwszą opcję. Pokazuje rozmiar w interaktywnej mapie drzewa. Pomaga to znaleźć rozmiar pakietu w dołączonym pliku.

Analizator pakietów Webpack

Inne odpowiedzi w tym poście pokazują rozmiar projektu, ale możesz nie używać wszystkich części projektu, na przykład podczas potrząsania drzewem. Inne podejścia mogą wtedy nie pokazać dokładnego rozmiaru.

czarny
źródło
4

Jeśli używasz Visual Studio Code, możesz użyć rozszerzenia o nazwie Koszt importu .

To rozszerzenie będzie wyświetlane w edytorze w rozmiarze importowanego pakietu. Rozszerzenie wykorzystuje webpack z wtyczką babili-webpack w celu wykrycia importowanego rozmiaru.

kyw
źródło
Dostępne również dla WebStorm.
JoeTidee
To rozszerzenie nie działa dla wszystkich pakietów. Pokazuje Obliczanie ... a potem nagle znika nawet po zmianie wartości limitu czasu na bardzo dużą liczbę
shreyansh
2

Możesz sprawdzić npm-module-stats . Jest to moduł npm, który pobiera rozmiar modułu npm i jego zależności bez instalowania lub pobierania modułu.

Stosowanie:

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

Może się to wydawać trochę rozwlekłe, ale odpowiednio rozwiązuje problem, który opisałeś.

bkk
źródło
1
A co z depami drugiego poziomu?
Sharikov Vladislav
2

"Szybkim i brudnym" sposobem jest użycie curl i wzrd.in do szybkiego pobrania zminimalizowanej paczki, a następnie grep rozmiaru pliku:

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

Pobieranie jest zminimalizowane, ale nie gzipowane, ale porównując dwa lub więcej z nich, można dobrze zrozumieć relatywny rozmiar pakietów.

thoragio
źródło
2
W takim razie skorzystaj z innej usługi, takiej jak unpkg.com . Przykład:curl -i https://unpkg.com/[email protected]/dist/axios.min.js | grep Content-Length
thoragio
2

howfat to jeszcze jedno narzędzie, które może pokazać całkowity rozmiar paczki:

npx howfat jasmine

screenot

Aleksiej Prochorow
źródło