Рубрики
Без рубрики

Monorepos и nx.

Что такое монорепо? MonoRepo – это один репозиторий, который может иметь один или несколько проектов … Помечено с помощью React, Teadercript, JavaScript.

Что такое монорепо?

А Монорепо это один репозиторий, который может иметь один или несколько проектов внутри него. Вы можете иметь Frontend, Backend и Helper Tools, все в том же Монорепо Отказ

У вас могут быть клиент и приложения BackOffice, как проживают в отдельных папках, которые потребляют API, проживающие в другой папке и наборе интерфейсы Это будет передано вашими приложениями и API.

Если у вас был Multi-Reppo один Репозиторий будет содержать Клиент Приложение, еще один, Backoffice Еще один будет иметь API И другой для интерфейсы . Может быть, все ваши приложения будут потреблять API и интерфейсы через Пакет Опубликовано на NPM или какой-то другой менеджер пакетов.

Почему вы должны использовать это?

Если вы работаете в компании или команде, наверняка, у них будет лучшие практики и стандарты кода, определенные, и если они этого не сделают, они будут иметь их рано или поздно.

Также как компания растет в людях и в сложности, у вас будут отдельные команды, работающие над тем же или соотношению целей. У вас может быть председатель и команда Backend, оба работая над тем же целью в разных репозиториях, и это может привести к некоторым проблемам в будущем, как дублированные типы медленное развитие и доставка времени и так далее.

А Монорепо обращается к некоторым из этих вопросов, имея все в одном Репозиторий Отказ Некоторые из преимуществ являются:

  • Поддерживать лучшие практики вашей компании в одном месте и применить их без особых усилий
  • Каждая лучшая практика, которую у вас есть, будет принята каждым проектом автоматически с помощью инструментов, таких как Eslint и красивее
  • Проще поделиться кодом между вашими проектами
  • Общий код легче поддерживать
  • Изменения, которые вы делаете, могут быть отражены на каждом проекте в то же время, что они сделаны

Недостаток монорепо

Хотя у него много преимуществ, как все вещи в жизни, это приходит с некоторыми недостатками

  • Каждое изменение вашего общего кода будет отражать каждое приложение, которое у вас есть. Итак, вам нужно убедиться, что все все еще работает, как ожидалось в каждом затронутом приложении
  • Проблемы с производительностью с вашими VCS (контроль версий системы) в качестве вашего Монорепо растет в размере.
  • Вашей команды/компании трудно предоставить конкретные разрешения доступа к конкретным командам, поскольку все в том же Репозиторий Отказ
  • Применяя некоторые конкретные правила для вашего Монорепо может быть проблемой. Как получить некоторые конкретные части этого и сделайте это Открытый источник Отказ Это не легко выполнить и, вероятно, вам понадобятся конкретные инструменты, которые помогут вам с этим.

NX, инструмент, который поможет вам управлять вашим монорепом

А потом приходит NX Отказ Инструмент, который стремится облегчить процесс управления A Монорепо Предоставляя набор помощников и команд, которые разработчики и сопровождающие могут использовать для организации и развития быстрее в пределах Монорепо Отказ

Это главная структура состоит из двух папок:

/Программы

Это место для хранения всех ваших приложений и их E2E Тесты. Например, у вас может быть веб-сайт для вашего клиента и один для вашего BackOffice, и они оба могут потреблять некоторые Компоненты создан на лимина папка.

/Libs.

Это где вы храните каждый код, который вы хотите поделиться между вашими приложениями, созданными на приложения папка. Например, вы могли бы иметь Библиотека компонентов Внутри этой папки и используйте компоненты, созданные там внутри вашего Приложения без много усилий. У вас также может быть API, который будет использоваться вашими приложениями, например.

Пример кода

Представьте, что у вас есть следующая кнопка внутри /libs/кнопка

export const Button = ({ onClick, children }) => {
    return 
}

А затем вы хотите использовать эту кнопку в вашем приложении, что он находится в /приложения/клиент . Это легко, как это

import { Button } from '/button';

export const CustomPage = () => {
    function handleClick() {}

    return (
        
This could be a form
) }

Почему nx?

NX помощники

NX поставляется с Предварительно построенный Генераторы, которые направлены на содействие процессу создания приложений и библиотек к Реагировать , Угловой и многие другие рамки. Эти Генераторы Может использоваться с помощью команд, которые вы работаете на вашем терминале, и он будет генерировать и добавлять код в папках и обновлять любые другие файлы, которые могут быть необходимыми.

И вы также можете создать свой собственный Генераторы Чтобы удовлетворить вашу команду и потребности компании.

Другие вещи

  • Он имеет очень хорошее расширение VSCode, которое облегчает управление монореп
  • У него есть График зависимости Это помогает узнать, какая часть вашего приложения должна быть построена снова и проверена когда что-то изменяется
  • У него есть один package.json файл в корне Монорепо Что стремится сделать весь ваш код использовать то же самое зависимость версии
  • Он кэширует все ваши команды, такие как сборки и тестирование. Итак, в первый раз, когда вы запустите некоторую команду, это может занять некоторое время, но после этого он будет плавно быстрым из-за кэша, который был сделан.

Заключение

Выбор между движением с Multi-Reppo или Монорепо это сложный, оба они приходят со своим собственным набором льгот и недостатков. Одна вещь, которую я могу сказать вам, – это сбалансировать их с вашей командой и организацией, чтобы выбрать правильный инструмент для работы.

Не стесняйтесь Отправь мне твит и следуй за мной в Twitter 🤙.

Оригинал: “https://dev.to/samuelmpinho/monorepo-and-nx-2oic”