В большинстве проектов Full Stack Javascript вы обнаружите, что во время разработки интерфейс и серверная часть приложения управляются в разных репозиториях. Поначалу это нормально, но по мере роста приложения становится очень трудно управлять. К недостаткам можно отнести:

  • Установка одинаковых пакетов в каждое приложение
  • Выполнение аналогичных команд по отдельности.

Lerna помогает решить эту проблему, позволяя легко управлять несколькими JS-приложениями / репозиториями с помощью:

  • Разрешение совместного использования общих пакетов во всех приложениях
  • Разрешение совместного использования команд во всех приложениях

Давайте посмотрим на пример

Пример

Для начала нам необходимо установить Lerna

$ npm install --global lerna

Затем создайте папку для пакетов Lerna.

$ mkdir lerna-example && cd lerna-example

Чтобы инициализировать Lerna:

$ lerna init

Структура папок будет выглядеть так

lerna-example/
  packages/
  package.json
  lerna.json

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

packages/
    front-end/
      package.json
    backend/
      package.json

Чтобы связать общие пакеты в двух только что созданных приложениях, нам нужно будет добавить команду сценария на крайний package.json

"scripts": {
  "bootstrap": "lerna bootstrap"
}

Запустив команду bootstrap, Лерна установит зависимости, перечисленные в обоих приложениях, и свяжет любые перекрестные зависимости. Это то же самое, что запуск yarn install в каждом из приложений, но вместо этого Lerna связывает пакеты, которые зависят друг от друга.

Для второй части нам нужно запустить оба приложения одной командой. Для этого мы добавим сценарий npm в каждое приложение для запуска.

backend

"scripts": {
  "start": "react-scripts start"
}

front-end

"scripts": {
  "start": "node app.js"
}

В нашем родительском package.json нам также нужно будет включить стартовый скрипт.

"scripts": {
  "start": "lerna run start"
}

Используя lerna run, Лерна будет искать в файле package.json каждого пакета сценарий npm, который соответствует сценарию, и запускает его. Это так просто.

Для получения дополнительной информации посетите страницу Lerna на GitHub.