Недавно я начал использовать bit (ранее BitSrc) для создания повторно используемых компонентов пользовательского интерфейса. У Bit есть хорошая документация о том, как использовать его с реакцией, но не так много, если вы используете create-react-app с typescript и определениями типов. Если вы не знаете, что такое bit, рекомендую прочитать немного об этом здесь.

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

Я создал свои компоненты с помощью Create react app — CRA и машинописного текста. На сайте bit я нашел документацию по использованию bit с проектом React (без машинописного текста). Моей первой мыслью было, что документация должна работать и для машинописного текста, но это не так.

Итак, давайте перейдем непосредственно к тому, как это сделать.

КРА

Создайте приложение React с машинописным текстом. Учебник можно посмотреть здесь.

Когда у вас есть приложение для реагирования, создайте папку с именем components в разделе src. Эта папка будет содержать все компоненты пользовательского интерфейса.

Первый компонент пользовательского интерфейса

Для удобства чтения лучше создать папку для каждого компонента пользовательского интерфейса. Также, если у вас будут некоторые модули css или какие-то другие подкомпоненты, они могут содержаться в одной папке. Я создам Button с файлом модуля стиля scss. Итак, давайте создадим файлы. Ваша структура папок должна выглядеть так:

Теперь давайте добавим код в оба файла.

Сначала StyledButton.tsx:

А затем StyledButton.module.scss:

Ваш компонент Button готов. Теперь вам нужно установить bit CLI, создать учетную запись Bit и подключиться из CLI. Вы можете следовать инструкциям здесь:



После установки bit вам необходимо добавить его в свой проект.

  • Запустите команду bit init в корневой папке вашего проекта.
  • Затем добавьте компилятор реакции, запустив bit import bit.envs/compilers/react -c
  • Пока не запускайте команду add, это объясняется в следующем разделе.
  • Остальные подробности в документации.

Машинопись

Существует разрядный компилятор для реакции с машинописным текстом под названием React-TypeScript, но он устарел и не работает (по состоянию на апрель 2019 г.). Поэтому мы должны сами преобразовать машинописный текст в javascript, как описано в следующих разделах.

Теперь после инициализации вы можете следовать Учебному пособию Bit React, если вы используете React с Javascript. Но что делать с React with Typescript? Если вы хотите преобразовать typescript в javascript и создать файлы type (*.d. ts), вам нужно использовать компилятор машинописного текста (tsc), как показано в следующем разделе.

Компилятор машинописного текста

Чтобы сгенерировать JS и типы из кода TS, вам понадобится компилятор Typescript (tsc), а tsc — файл tsconfig.json. Но в CRA файл tsconfig.json создается для вас CRA во время сборки, и вы не хотите изменять этот сгенерированный файл. Чтобы создать новый файл tsconfig, давайте назовем его lib.tsconfig.json со следующим содержимым:

В lib.tsconfig.json есть несколько важных полей:

  • outDir: выходной каталог для сгенерированных файлов javascript и type.
  • types: какие определения типов включать. Я включил узел из-за синтаксиса «require» в строке 2 файла StyledButton.tsx. Если вы не используете «require», у вас может быть пустой массив: []
  • включать: какие папки включать
  • Детали tsconfig можно прочитать здесь

Теперь добавьте новый скрипт в package.json с именем build-cmps или любым другим именем, которое вы предпочитаете.

Этот скрипт запустит компилятор машинописного текста и сгенерирует файлы по пути, указанному в outDir в файле lib.tsconfig.json выше. Но tsc читает только файлы с расширением *.ts и *.tsx. Файл стиля (.scss) вам нужно скопировать себе.

Установите файлы копирования, чтобы сделать его независимым от платформы: npm install copyfiles --save-dev и измените скрипт build-cmps на

Выполнить: npm run build-cmps Это сгенерирует все файлы JS и Type в выходном каталоге.

Примечание. Если вы сохраните структуру папок outDir такой же, как у вашего app/src, как я сделал, вы можете скопировать все файлы .scss с помощью одна такая команда. В противном случае вам придется копировать каждый файл .scss.

Экспорт в бит

Теперь вы можете добавить компонент в бит, как показано ниже. Это также объясняется в документации, за исключением команды bit add ниже, которая немного отличается:

  • Выполнить bit add lib/src/components/StyledButton/ --id styled-button --main StyledButton.js
  • Указав путь к папке, бит добавляет все файлы в папке в один компонент.
  • id: указывает имя этого компонента, поэтому оно может отличаться от имени компонента React.
  • main: определяет файл точки входа компонента
  • Беги bit tag --all
  • Беги bit export <YourBitAccount>.<BitCollection>
  • Теперь ваш компонент будет доступен в вашей битовой коллекции.

После того, как ваш компонент bit будет экспортирован в вашу коллекцию, вы можете импортировать его в другой проект с помощью npm, yarn или bit:

  • npm: npm i @bit/<useraccount>.<collectionname>.styled-button
  • пряжа: yarn add @bit/<useraccount>.<collectionname>.styled-button
  • бит: bit import <useraccount>.<collectionname>/styled-button

Примечание. Вам не нужно добавлять bit (bit init) в проект, который импортирует компонент Bit, вы можете просто установить его через npm или yarn.