Создайте действительно модульную библиотеку компонентов, которую можно будет разрабатывать и использовать по одному компоненту за раз.

Когда вам нужно совместно использовать общие компоненты пользовательского интерфейса (React, Vue, Angular и т. Д.) Между разными проектами или приложениями, вы часто создаете общую библиотеку пользовательского интерфейса.

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

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

Люди, которые устанавливают библиотеку (вы или другие разработчики приложений), могут выбирать и использовать только те компоненты, которые им действительно нужны, и получать обновления только для этих компонентов, а не для всей библиотеки.

В этом посте мы узнаем, как использовать компонентно-ориентированные инструменты, такие как Bit, чтобы это произошло, без необходимости начинать рефакторинг вашей библиотеки. Это также обеспечит другие преимущества для вашей библиотеки, такие как возможность обнаружения компонентов и возможность организовывать общие коллекции для разных команд / проектов.

Зачем разрабатывать отдельные компоненты?

Разработка: вы можете использовать Bit, чтобы изолировать каждый компонент как отдельный модуль в вашей библиотеке, включая все его файлы и зависимости. Вы можете редактировать каждый компонент по отдельности или вместе. Поскольку Bit позволяет вам управлять графиком зависимостей для всех компонентов в проекте, вы можете разработать каждый компонент и точно узнать, как вносимые вами изменения влияют на другие компоненты в репо, чтобы вы могли обновлять все, что требует обновления. Затем вы можете опубликовать каждый компонент по отдельности для повторного использования в другом месте.

Потребление: вы и другие пользователи можете установить каждый компонент по отдельности, используя npm / yarn как отдельный пакет. Когда потребляющему проекту требуются изменения, вы можете импортировать исходный код любого компонента прямо в этот проект, чтобы внести изменения. Затем вы можете просто обновить и поделиться новой версией. Это означает совместную работу с несколькими репозиториями в одной команде.

Обновления: пользователи могут получать обновления только для используемых компонентов, без необходимости вносить обновления для всей библиотеки. Они также могут предлагать обновления для любого компонента, не углубляясь в библиотеку. Это означает большее принятие вашей библиотеки разработчиками, использующими компоненты.

Обнаруживаемость: вы можете создать общую коллекцию bit.dev, в которой все ваши компоненты будут доступны для всех, чтобы они могли их обнаружить, использовать и совместно работать над ними. Это выходит даже за рамки просто разработчиков, так как вы можете делиться компонентами с другими людьми, такими как маркетинг, продукт, дизайн и т. Д., Чтобы узнать, что у вас есть. Вы можете визуализировать каждый компонент, поиграть с примерами, просмотреть автоматически извлеченную ссылку на API, запустить изолированный процесс сборки / тестирования для каждого компонента и многое другое.

Изолируйте, версируйте и публикуйте отдельные компоненты из библиотеки

Давайте воспользуемся Bit для модульной разработки и распространения компонентов в нашей библиотеке. Он сделает за нас тяжелую работу и предоставит нам контроль над точным состоянием графа зависимостей каждого компонента в любой момент.

Это инструмент, созданный для совместного использования компонентов. Давайте использовать его для отслеживания различных компонентов в нашей библиотеке. Он проанализирует каждый из них и упакует в изолированную капсулу со всеми файлами и зависимостями компонента. Затем мы сможем версии, опубликовать и позже обновить каждый компонент по отдельности.

Во-первых, давайте быстро настроим Bit для вашей библиотеки.

Установите Bit и создайте рабочее пространство для проекта вашей библиотеки:

$ npm install bit-bin -g
$ cd project-directory
$ bit init

Затем перейдите на bit.dev и быстро создайте бесплатную учетную запись. Затем создайте коллекцию для размещения ваших компонентов (и сделайте их доступными для обнаружения).

Когда закончите, аутентифицируйте бит в своей учетной записи bit.dev:

$ bit login

Большой! Теперь вы готовы к отслеживанию компонентов. Используйте команду bit add, чтобы сообщить Bit, где найти компоненты в вашей библиотеке.

Например, давайте отследим все компоненты в src/components. В этом случае мы будем использовать шаблон глобуса, чтобы сообщить Bit отслеживать все компоненты в этом каталоге.

$ bit add src/components/*

Теперь запустите bit status и убедитесь, что компоненты отслеживаются, и этот бит не пропустил файл или зависимость для любого из компонентов.

Затем давайте импортируем компилятор для встраивания кода в файлы, которые могут работать и в других проектах. Например, воспользуемся установкой React compiler в рабочую область:

$ bit import bit.envs/compilers/react

Теперь вы можете запустить bit build, чтобы убедиться, что все работает нормально.

Далее установим версию для компонентов. Bit будет версировать каждый компонент с дополнительной версией, но вы можете переопределить и выбрать свои собственные версии. Установка независимой версии для каждого компонента очень полезна для разработки, публикации, установки и обновления их по отдельности.

Для начала установим все на v1.0.0. Позже мы можем использовать Bit для обновления отдельных компонентов, контролируя отношения зависимости между ними.

$ bit tag --all 1.0.0

Затем запустите быстрый bit status, чтобы

Теперь вы готовы опубликовать компоненты в bit.dev:

$ bit export <your-user-name>.<your-collection-name>

Вот и все! Теперь перейдите в свою коллекцию и исследуйте компоненты. Теперь к каждому из них можно добавить сохраненный пример, который bit.dev будет отображать и представлять для компонента. Примеры также помогут сгенерировать предварительный просмотр снимка bit.dev, представленный в коллекции компонентов, чтобы помочь вам сделать выбор.

Например, если вы разделяете библиотеку semantic-ui-react, вы можете включить это:

В эту коллекцию индивидуально повторно используемых компонентов. Обратите внимание, что теперь вы даже можете увидеть точный размер пакета и зависимости каждого компонента.

А вот пример страницы компонента, на которой вы можете поиграть с кодом, увидеть отрисовку компонента и установить компонент с помощью npm / yarn.

Затем давайте посмотрим, как устанавливать и позже обновлять отдельные компоненты в разных проектах, не загружая всю библиотеку.

Установить отдельные компоненты из библиотеки

Когда вы заходите на страницу компонента в bit.dev, вы видите панель с различными способами использования компонента. Давайте посмотрим на компонент перехода из semantic-ui-react:



На странице bit.dev вы можете сказать, что он весит всего 73 КБ и имеет несколько зависимостей, включая Lodash. Это немного, но, по крайней мере, теперь я точно знаю, что добавляю в свое приложение, еще до того, как фактически установлю компонент.

Если вы уже используете bit login, ваш клиент npm настроен на bit.dev как реестр с ограниченным объемом. Если нет, выполните для этого следующую команду:

npm config set '@bit:registry' https://node.bit.dev

Затем просто установите компонент с помощью npm / yarn:

npm i @bit/semantic-org.semantic-ui-react.transition
# or
yarn add @bit/semantic-org.semantic-ui-react.transition

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

Обновить отдельные компоненты в библиотеке

Когда вы обновляете компонент в библиотеке, вы можете просто пометить его снова, а затем экспортировать его как новую версию в свою коллекцию bit.dev. Перед этим вы даже можете запустить `bit status`, чтобы узнать, какие другие зависимые компоненты будут затронуты изменениями и как.

Затем потребитель компонента может просто внести обновления для компонентов, которые он фактически использует, без необходимости обновлять всю библиотеку.

Более того, люди, использующие компоненты, могут использовать команду bit import, чтобы внести реальный исходный код компонента в любое репо. Там они могут локально внести изменения в код и пометить новую версию. Новая версия может оставаться локальной или может быть снова опубликована в коллекции. При экспорте вы можете передать флаг --eject, чтобы переместить измененный компонент обратно в зависимость от пакета в вашем package.json файле.

Затем обновленную версию можно перенести в любое другое хранилище, включая исходную библиотеку. Поскольку Bit использует Git под капотом, вы можете использовать Утилиту слияния Git для объединения изменений между разными версиями ваших компонентов в одном локальном рабочем пространстве Bit, чтобы легко синхронизировать изменения кода между репозиториями.

С предстоящей интеграцией GitHub-sync они также могут использовать этот рабочий процесс для отправки запроса на перенос в вашу библиотеку в GitHub. Это может помочь в освоении вашей библиотеки и обеспечить совместный рабочий процесс для всех.

Обнаружение компонентов и сотрудничество

Теперь, когда вы поделились своей библиотекой с bit.dev, ваша коллекция становится общим порталом, через который ваша команда может делиться повторно используемыми компонентами.

Вы можете искать и исследовать компоненты с помощью семантического поиска, фильтровать соответствующие параметры, такие как контекстные метки или размер пакета компонентов, и позволять различным людям и командам сотрудничать над вашими общими компонентами.

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

Это означает, что вы можете быстрее создавать приложения с помощью модульных компонентов, которые публикуются, устанавливаются и обновляются в разных проектах. Надеюсь, это поможет, поэтому не стесняйтесь и попробуйте или изучите руководства. Ура и не стесняйтесь задавать любые вопросы ниже. 👐

Учить больше