Размер папки node_modules не является проблемой. Это привилегия

Мои мысли о споре о размере папки node_modules

Раньше я злился наnode_modulesразмер папки. Как приложение JavaScript может иметь размер 100, 200 МБ, даже если я не добавляю ни одной строчки кода? Я просто бегуnpx create-react-app todolistи я загрузил 218,7 МБвещи! (Я только что проверил, это реальное число).

Всякий раз, когда вы думаете о размере node_modules, думайте о миллионах человеко-часов, которые мы, программисты, вкладываем в него.

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

Мы все согласились публиковать наш код на своих серверах, и люди создавали что-то поверх, а другие - сверху, пока мы не дошли до того, что у нас были быстрые стартеры (например, create-response-app или Vue CLI), которые мы можем использовать, чтобы бесплатно получить много энергии в наши руки.

Неужели 200 МБ - это слишком много в эпоху быстрого хранилища порядка ТБ?

Имейте в виду, что подавляющее большинство этого размера - это тесты, документация и многое другое. А также подавляющая часть оставшегося кода используется только в среде разработки. Это не значит, что вы будете обслуживать клиенту приложение размером 200 МБ, я думаю, это хорошо понятно.

Я взял в пример приложение create-react-app. Что в этих 200 МБ?

Для начала create-react-app содержит

  • компилятор (Babel)
  • сборщик (Webpack)
  • минификатор кода
  • линтер (ESLint)
  • инструмент конвейера стилизации (SCSS)
  • сервер разработки с живой перезагрузкой
  • тестовый бегун (Jest)

Если вы хотите написать приложение для Mac или iPhone, вам необходимо установитьXcode, IDE, предоставленная Apple.Xcodeэто (подождите ..) размером почти 14 ГБ. Это в 70 раз больше node_modules. Конечно, мы сравниваем две разные вещи, но node_modules содержит все, что вам нужно, чтобы начать работу над своим кодом. Вы можете соединить его с VS Code размером 200 МБ или с Sublime Text размером 30 МБ - не имеет значения, никто даже строго не требуется (в то время как вы не можете создать приложение iOS / macOS безXcode).

Если вас беспокоит заполнение жесткого диска модулями,pnpm- оптимальное решение, позволяющее централизовать модули в одном месте, и все ваши приложения используют эти модули, а не создают свою собственную локальную версию. Он используется такими онлайн-инструментами кодирования, какСбойНапример.

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

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

У меня была возможность работать с другими языками и экосистемами, где динамичность и возможности npm были бы благословением, и вместо этого мне пришлось создать свою собственную небольшую библиотеку для всего, поскольку вещи, которые я обнаружил, распространяемые сторонними разработчиками, были либо не существует, либо заброшен через пару лет и не поддерживается в соответствии с остальной частью языка.

Может быть, у нас может быть флаг, чтобы загружать только производственный код, а не всю документацию, тесты и что нет? Но это просто идея, которая пришла в голову сейчас, не знаю, как это будет осуществимо.

В любом случае: да здравствует,node_modules!

Скачать мою бесплатнуюРуководство для начинающих по JavaScript


Больше руководств по js: