Как посмотреть размер пакетов npm?

129

Когда я ищу пакеты в NPM, я хотел бы видеть размеры пакетов (в КБ или МБ и т. Д.). NPM, похоже, не показывает эту информацию.

Как я могу определить, насколько пакет NPM добавит моего проекта?

arielorvits
источник
Перехватываю этот разговор, потому что я хотел бы указать на инструмент, который помогает требовать свободного места на вашем компьютере. Видимо node_modulesна моей машине атм занимает 21бг; npkillможет помочь вам в этом ! [введите описание изображения здесь ] ( i.stack.imgur.com/BKbyU.png )
Ахмад Альфи

Ответы:

182

Что вы, вероятно, захотите измерить, так это влияние пакета, если вы добавите его в свой набор приложений. Большинство других ответов будут оценивать только размер исходных файлов, что может быть неточным из-за встроенных комментариев, длинных имен переменных и т. Д.

Я сделал небольшую утилиту, которая сообщит вам минимальный + gzip-размер пакета после того, как он попадет в ваш бандл -

https://bundlephobia.com

Шубхам Канодиа
источник
5
Спасибо! Это действительно хорошая утилита!
BaronVonKaneHoffen
3
Красивый интерфейс! Спасибо, это именно то, что я искал. Однако для сверхбольших пакетов требуется вечность.
protoEvangelion
3
@Black должен вернуться
Шубхам Канодиа
6
Эта ссылка: https://cost-of-modules.herokuapp.comтеперь указывает на https://bundlephobia.com очень полезный инструмент, кстати.
Адам Вебер,
4
Это достаточно круто, что его нужно просто добавить на страницы npm для каждого пакета
eddiemoya
69

Взгляните на этот проект стоимости модулей . Это пакет npm, в котором будет указан размер пакета и количество дочерних элементов.

Монтаж: npm install -g cost-of-modules

Использование: запускать cost-of-modulesв каталоге, в котором вы работаете.

введите описание изображения здесь

Лирон Яхдав
источник
2
Немного перебор, необходимо переустановить все ваши модули перед вычислением. Но делает свою работу.
pdem 03
7
не используйте этот пакет - он создает папку артефактов под названием nodemodules.bak, которая создает уродливые побочные эффекты
Nth.gol
22

Я создал инструмент, размер загрузки npm , который проверяет размер архива для данного пакета npm, включая все архивы в дереве зависимостей. Это дает вам представление о стоимости (время установки, дисковое пространство, ресурсы времени выполнения, аудит безопасности, ...) предварительного добавления зависимости.

размер загрузки веб-пакета

На изображении выше размер Tarball - это tar.gz пакета, а Общий размер - это размер всех tarball. Инструмент довольно простой, но он делает то, что говорит.

Кли инструмент также доступен. Установить его можно так:

npm i -g download-size

И используйте это так:

$ download-size request
request@2.83.0: 1.08 MiB

Исходный код доступен на Github: api , инструмент cli и веб-клиент .

arve0
источник
20

Я создал Package Phobia в начале этого года с надеждой получить информацию о размере пакета на npmjs.com, а также отслеживать разрастание пакетов с течением времени.

https://packagephobia.com

IMG

Это предназначено для измерения дискового пространства после запуска на npm installпредмет зависимостей на стороне сервера, таких как expressили зависимости разработчика, например jest.

Вы можете узнать больше об этом инструменте и других подобных инструментах в readme здесь: https://github.com/styfle/packagephobia


Обновление 2020

«Размер без упаковки» (в основном размер публикации) доступен на веб-сайте npmjs.com вместе с «Всего файлов». Однако это не рекурсивное значение, npm installкоторое, вероятно, будет намного больше, потому что один пакет, вероятно, зависит от многих пакетов (таким образом, Package Phobia по-прежнему актуален).

Также существует ожидающий RFC для функции, которая выводит эту информацию из интерфейса командной строки.

styfle
источник
Это здорово, но почему его результаты так сильно отличаются от фобии пучков? например, сравните результаты для lodash.lowerfirst
Айтекин
2
@DanyalAytekin Потому что они измеряют разные вещи. Краткий ответ: если вы ищете интерфейсный пакет, используйте BundlePhobia. Если вы ищете серверный пакет, используйте PackagePhobia. Если вам интересно, есть подробности в readme .
Styfle
16

Если вы используете webpack в качестве сборщика модулей, обратите внимание на:

Однозначно рекомендую первый вариант. Он показывает размер в интерактивной древовидной карте. Это поможет вам определить размер пакета в вашем связанном файле.

Анализатор пакетов Webpack

Другие ответы в этом посте показывают вам размер проекта, но вы можете использовать не все части проекта, например, с встряхиванием дерева. Тогда другие подходы могут не показать вам точного размера.

черный
источник
4

Если вы используете Visual Studio Code, вы можете использовать расширение под названием Import Cost .

Это расширение будет отображать в редакторе в строке размер импортированного пакета. Расширение использует webpack с babili-webpack-plugin для определения импортированного размера.

KYW
источник
Также доступно для WebStorm.
JoeTidee
Это расширение работает не для всех пакетов. Он показывает Calculating ... а затем внезапно исчезает даже после изменения значения тайм-аута на очень большое число
шреянш
2

Вы можете проверить npm-module-stats . Это модуль npm, который получает размер модуля npm и его зависимостей без установки или загрузки модуля.

Использование:

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

Это может показаться немного многословным, но оно решает проблему, которую вы описали должным образом.

БКК
источник
1
А как насчет депеш 2-го уровня?
Шариков Владислав
2

"Быстрый и грязный" способ - использовать curl и wzrd.in для быстрой загрузки минифицированного пакета и затем определить размер файла:

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

Загрузка уменьшена, но не сжата, но вы получите хорошее представление об относительном размере пакетов при сравнении двух или более из них.

thoragio
источник
2
Тогда воспользуйтесь другим сервисом, например unpkg.com . Пример:curl -i https://unpkg.com/axios@0.16.1/dist/axios.min.js | grep Content-Length
thoragio
2

howfat - еще один инструмент, который может показать общий размер пакета:

npx howfat jasmine

screensot

Алексей Прохоров
источник