Опубликовано: 8 марта 2019 г. автором: CS Rhymes

Кажется, что в наши дни невозможно создать веб-сайт без использования какого-либо менеджера пакетов, будь то npm для ваших внешних зависимостей или что-то вроде композитора для ваших зависимостей php. Если вам нужно сделать что-то немного сложное, то, скорее всего, у кого-то еще была такая же проблема, и он создал пакет для решения этой проблемы, поэтому вы можете просто добавить его в свои зависимости, установить и вперед. Но значит ли это, что веб-разработка — это просто копирование и вставка чужой работы на ваш сайт?

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

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

Если вы не можете победить их, присоединяйтесь к ним…

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

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

Как только я привык к идее включения пакетов в свой проект, меня уже не остановить. Зачем мне тратить время на написание функции, которая делает то, что мне нужно, когда я могу использовать библиотеку, которая сделает это за меня? Функцию Z кажется немного сложной для разработки, я могу просто добавить пакет A, и все будет хорошо.

Ад зависимостей

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

Папка моего поставщика была огромной, а папка модулей узла представляла собой черную дыру рекурсивных зависимостей, а в мой проект было включено так много пакетов, что он был невероятно раздут с огромным файлом JavaScript, несмотря на многочисленные попытки минимизации.

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

Как найти золотую середину

Так я понял, что должна быть золотая середина. Где-то, где я загружаю необходимые пакеты и действительно много думаю о том, что еще я включаю. Я многое узнал о JavaScript и понял, что многие разработчики пакетов очень много работают, чтобы позволить вам извлекать из их пакетов только те фрагменты, которые вам нужны.

Вам не нужно использовать весь пакет, если вам нужна только одна функция. Просто импортируйте нужную функцию в скомпилированный файл JavaScript, чтобы не заставлять своих посетителей загружать код, который никогда не запустится.

Раньше я использовал Foundation от Zurb, и моя привычка заключалась в том, чтобы включать их скомпилированную библиотеку JavaScript на тот случай, если мне понадобится каждая функция в какой-то момент в будущем, но потом я понял, что если проект, над которым я работал, просто нуждался в аккордеоне, то я только нужен основной пакет и модули JavaScript аккордеона. Затем вы можете добавлять дополнительные модули по мере необходимости.

Менеджеры пакетов, такие как composer и npm, также предлагают возможность сохранения зависимостей как для производства, так и для разработки, что означает, что вы можете указать, какие из них должны быть извлечены только для вашей локальной разработки, а какие нужны только для производства. Примером этого является phpunit. Вам не нужно это на вашем рабочем сервере, только в вашей локальной среде разработки, где вы запускаете тесты, поэтому просто добавьте его в раздел require-dev вашего composer.json.

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

Первоначально опубликовано на https://www.csrhymes.com 8 марта 2019 г.