Практическое руководство по написанию лаконичного кода и повторному использованию вспомогательных функций JS в проектах.
Принятый в отрасли подход к вспомогательным/утилитным функциям заключается в следующем: для них выделяется специальный раздел, им даются специальные названия, они группируются по функциональным возможностям и критериям тесной связи, и каждая из них экспортируется/импортируется по мере необходимости.
Пока все понятно. Но утилитные функции не зависят от контекста.
Вы, конечно, собираетесь повторно использовать их в других проектах, передавать членам команды или даже делиться ими в интернете, так?
Но копирование кода из предыдущих проектов – сомнительное решение, которое не только плохо масштабируется, но и в будущем создает многочисленные проблемы с читабельностью и обслуживанием кода.
Так как же правильно делиться полезными функциями? Вот три решения, ранжированные, на мой взгляд, от худшего к лучшему.
Использование npm ни для одного из них не требуется – вы можете сделать то же самое с любым другим менеджером пакетов – yarn, chocolatey, pnpm и т. д.
1. Опубликуйте свой модуль в реестре NPM под собственной областью действия
Вот что нужно сделать:
Инициализируйте каталог пакета с помощью npm init, добавьте имя и описание, а также обозначьте область вашим именем пользователя.
Поместите вспомогательные/служебные функции в точку входа пакета (по умолчанию это будет index.js) и экспортируйте их.
Создайте учетную запись на веб-сайте NPM, подтвердите электронную почту, затем войдите в систему через интерфейс командной строки с логином npm.
Все готово! Опубликуйте с помощью npm publish --access=public
C базовым бесплатным аккаунтом у вас будет доступ к неограниченному количеству общедоступных пакетов, но иногда это не лучший вариант, потому что большинство корпоративных проектов, над которыми вы будете работать, не будут разработаны на основе открытого исходного кода (и даже если ваш проект с открытым исходным кодом, NPM не способствует «обнаруживаемости» кода).
Незарегистрированные пакеты NPM создавать не получится, а для создания закрытых пакетов нужен платный аккаунт. Даже в этом случае нет возможности выборочного контроля доступа или совместной работы.
2. Загрузите tar-архив по секретному URL
Менеджеры пакетов, такие как NPM, могут устанавливать архивы, полученные с предоставленного URL-адреса. Вот что нужно сделать:
Сначала как обычно – npm init в каталоге пакета, имя и описание пакета, информация о версии и т. д.
Создайте tar-архив (архив .tar) из каталога вашего пакета, с вашими функциями, находящимися в подпапке внутри него (в чем-то вроде package/).
Вот команда (в Windows используйте Powershell):
tar cvfz FILENAME.tar.gz DIRECTORY/
Загружайте этот архив куда хотите – вы даже можете разместить его на своем хостинге. Вы сможете использовать любой метод контроля доступа, который вам нравится.
Каждый раз, когда вам в проекте понадобятся эти материалы, установите через NPM и импортируйте:
npm i your-url.com/FILENAME
Наконец-то нормальный контроль доступа! Но с подвохом – это будет полностью ваша ответственность. NPM здесь задействован только в процессе установки пакета. Этот метод позволяет создавать незарегистрированные и приватные пакеты, настраивать контроль доступа, но придется пожертвовать управлением версиями и автоматическими обновлениями.