Настройка инструментов для разработки JavaScript-библиотек
Задача
При разработке серьёзной JavaScript-библиотеки присутствует неминуемый этап непосредственной настройки процесса разработки (Developer Experience) и процесса непрерывной интеграциии и поставки (CI/CD). Работа, выполняемая на этом этапе (далее этап найстройки), сводится к выбору платформ, инструментов и библиотек, необходимых для разработки и деплоя. На этап настройки уходят время и силы, количество которых необходимо сократить.
Анализ
Задача сокращения количества ресурсов, затрачиваемых на этапе настройки, является решаемой, потому что требования к выстраеваемой на этом этапе системе являются типовыми для широко спектра бизнес-задач. Стандартными требованиями являются:
- поддержка типизации (TypeScript);
- сборка библиотеки для браузеров и для Node.js;
- возможность разбиения библиотеки на отдельные пакеты и управление ими;
- контроль качества: тесты, линтинг, форматирование кода, в том числе локальный при каждом коммите и на стороне CI/CD;
- CI/CD: деплой библиотеки в реестр пакетов с возможностью использовать приватный реестр;
Решение
С учётом всех перечисленных требований был собран репозиторий, в котором используются:
- GitHub Packages
- GitHub Actions
- yarn + workspaces
- lerna
- tsdx
Репозиторий можно взять за основу для разработки JavaScript-библиотеки, скачав его, например, при помощи degit:
npx degit https://github.com/Noviel/typescript-library-monorepo-template my-lib
После этого останется выполнить несколько шагов по настройке GitHub, которые позволят использовать GitHub Packages, а так же заменить данные в шаблоне на свои. Более подробные инструкции по использованию можно найти в репозитории