Новый способ управления утилитами JavaScript

Я уверен, что большинство из вас слышали о «левой панели и npm», которая вызвала много споров несколько месяцев назад. На мой взгляд, в центре внимания дискуссии находится вопрос о том, следует ли публиковать одну функцию JavaScript как отдельный пакет npm. Мой ответ - нет. Просто при установке пакета мне кажется, что это не так, это приносит мне еще двадцать зависимостей, которые в основном являются небольшими функциями. Итак, что нам делать с небольшими утилитами JavaScript? Вот как я с этим справляюсь.

Я начал с написания всех утилит сам, что оказалось не так сложно, как я себе представлял. Фактически, я смог закончить большинство из них за 30 минут. Для особых случаев, таких как isArray или isNumber, менее одной минуты. Раньше я дольше искал такие модули в npm. Вы знаете, когда вы набираете «left pad», есть пакеты, называемые «left-pad, lpad, pad-left, pad_left, string-pad, xx-left-pad, left-pad-xx…». Вы должны решить, какой из них лучше установить. И обычно заканчивалась тем, у кого больше всего загрузок. Однако из того, что я узнал, в большинстве случаев для этих крошечных модулей они загружаются с наибольшим номером просто потому, что они зарегистрированы под лучшим именем, а не имеют лучшую реализацию. Еще одно преимущество написания утилит - возможность немедленно исправить ошибку. Если вы продолжаете использовать для этого модули npm, вам нужно сначала открыть проблему в ее репо, дождаться, пока автор исправит, а затем опубликовать новую версию. Наконец, вы обновили свои зависимости npm. Это достойный процесс для сложных проектов с открытым исходным кодом. Однако он явно не эффективен для модулей, написанных всего несколькими строками кода.

Теперь переходим к важной части: как повторно использовать все эти утилиты? Я уже писал leftPad в одном из своих проектов. Конечно, я не собираюсь пробовать это во второй раз в другом новом проекте, потому что это звучит глупо. Чтобы решить эту проблему, я написал инструмент, который помогает мне создавать служебные библиотеки для каждого проекта. Вот как это работает. Сначала создаю репо для хранения утилит. Инструмент сканирует мои новые файлы проекта, чтобы увидеть, что я включил, а затем использует фрагменты кода из этого репозитория утилит для создания файла util.js. Все происходит автоматически, больше никакого копирования и вставки!

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

Кстати, стандартная утилита repo также готова к тому, чтобы люди могли добавлять гораздо больше полезных фрагментов кода. С нетерпением жду ваших запросов на вытягивание :)

Подводя итог, это похоже на комбинацию гигантской версии loadash и мини-версии webpack, предназначенной только для объединения небольших фрагментов кода.

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