Настройка инструментов для разработки JavaScript-библиотек

Настройка инструментов для разработки JavaScript-библиотек

monorepo
library
configuration
ci/cd
build tools
TypeScript
lerna
yarn workspaces
GitHub Packages
GitHub Actions

Задача

При разработке серьёзной 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, а так же заменить данные в шаблоне на свои. Более подробные инструкции по использованию можно найти в репозитории