react-components-dasha-test v1.0.1
Информация для пользователей библиотеки
Как установить и использовать
Эта информация требует уточнения после публикации пакета в npm
npm run install react-components
yarn add react-componentsimport React from "react";
import { Button, ButtonSize } from "react-components";
const App = () => (
<div className="app-container">
<h1>Hello I'm consuming the component library</h1>
<Button size={ButtonSize.S} />
</div>
);
export default App;Какие есть компоненты
А сюда добавить описание компонентов
Button
...
Table
...
Spinner
...
Использование SASS переменных
Мы экспортируем некоторые переменные, чтобы вы могли пользоваться стилями без дублирования кода. Например, вы можете воспользоваться цветами и типографикой:
@import '~react-components/build/typography';
@import '~react-components/build/variables';
.example-container {
@include heading;
color: $react-components-white;
}По-хорошему тут бы описать эти переменные, что про что.
Информация для разработчиков библиотеки
Как добавлять новые компоненты
Чтобы добавить новый компонент, не нужно руками создавать папки и файлы. Нужно запустить команду
npm run new:component ComponentName
yarn new:component ComponentNameВ папке src будет автоматически создана подпапка со всеми необходимыми файлами:
- index.ts для экспорта компонента
- ComponentName.tsx с шаблоном компонента
- ComponentName.stories.tsx с шаблоном историй для Storybook
- ComponentName.spec.tsx с шаблоном автотестов
- ComponentName.scss с шаблоном стилей компонента
Дальше вам остается только работать с созданными файлами :smile:
Не забудьте добавить экспорт нового компонента в файл /src/index.ts
Сборка пакета
Чтобы запустить сборку пакета, используйте команду
npm run build
yarn buildАвтотестирование
Jest: https://jestjs.io/ru/docs/tutorial-react
Testing Library: https://testing-library.com/docs/react-testing-library/intro/
Для тестирования компонентов библиотеки используются Jest и Testing Library. Каждый компонент "из коробки" имеет файл ComponentName.spec.tsx, в таких файлах следует писать автотесты.
Автотесты автоматически запускаются по команде git push, но вы можете запустить их самостоятельно. Для этого используйте команду
npm run test
yarn testЕсли вы хотите автоматически тестировать код компонентов или даже самих тестов, пока его меняете, используйте команду
npm run test:watch
yarn test:watchJest запустит автотестирование и будет "слушать" ваши изменения. На каждое сохранение тесты будут перезапускаться.
Storybook
Сайт: https://storybook.js.org/
Гитхаб репозиторий: https://github.com/storybookjs/storybook
Storybook - это удобный инструмент, который позволяет просматривать компоненты в разных состояниях изолированно от внешнего окружения.
Каждый компонент "из коробки" имеет файл ComponentName.stories.tsx, в котором вы можете описывать различные состояния компонентов в качестве историй. Эти истории будут рендериться при запуске Storybook.
Чтобы запустить Storybook локально, используйте команду
npm run storybook
yarn storybookПосле этого вы можете изменять код компонентов или истории, Storybook будет обновляться после сохранения изменений.
Если вы хотите экспортировать Storybook в виде статических файлов (ну мало ли), используйте команду
npm run storybook:export
yarn storybook:exportTypechecking
https://www.typescriptlang.org/tsconfig
В проекте настроена автоматическая проверка типов Typescript при коммите и пуше изменений. При коммите проверка типов выполняется только для измененных файлов. При пуше - для всего проекта. Если вы хотите запустить проверку типов локально, используйте команду
npm run typecheck
yarn typecheckФорматирование кода - Prettier
Сайт: https://prettier.io/
Гитхаб репозиторий: https://github.com/prettier/prettier
В проекте настроено автоматическое форматирование изменяемого кода при коммите с помощью Prettier. При пуше изменений также выполняется валидация форматирования всего проекта в соответствии с заданными правилами. Если вы хотите запустить проверку форматирования локально, используйте команду
npm run prettier:check
yarn prettier:checkЕсли вы хотите запустить автоматическое форматирование локально, используйте команду
npm run prettier
yarn prettierESLint
Сайт: https://eslint.org/
Гитхаб репозиторий: https://github.com/eslint/eslint
В проекте настроен линтер ESLint. В конфигурации используются все рекомендуемые настройки, а также специальные настройки для TypeScript. При коммите изменений линтер запускается только для изменяемых файлов. Он попытается исправить все ошибки, которые сможет. При пуше изменений линтер запустится для всего проекта в режиме валидации. Если вы хотите запустить линтер локально для валидации, используйте команду
npm run eslint:check
yarn eslint:checkЕсли вы хотите запустить линтер для исправления ошибок локально, используйте команду
npm run eslint
yarn eslintStylelint
Сайт: https://stylelint.io/
Гитхаб репозиторий: https://github.com/stylelint/stylelint
В проекте настроен линтер Stylelint для валдиации CSS. При коммите изменений линтер запускается только для изменяемых файлов. Он попытается исправить все ошибки, которые сможет. При пуше изменений линтер запустится для всего проекта в режиме валидации. Если вы хотите запустить линтер локально для валидации, используйте команду
npm run stylelint:check
yarn stylelint:checkЕсли вы хотите запустить линтер для исправления ошибок локально, используйте команду
npm run stylelint
yarn stylelintCommit
В проекте настроена валидация коммитов по стандарту Conventional Commits. Подробнее ознакомиться можно по ссылке: https://www.conventionalcommits.org/en/v1.0.0/
Полезно придерживаться этого стандарта, тк он облегчает работу с репозиторием, а также полезен при публикации новых версий пакета (см. спецификацию семантического версионирования https://semver.org/)
Если при коммите вы используете команду git commit, то вам нужно будет самостоятельно составить сообщение коммита валидным образом, иначе коммит не пройдет. Если вы не хотите париться на этот счет, используйте команду
npm run commit
yarn commitНужно будет последовательно ответить на несколько вопросов, на основе ваших ответов будет сформировано сообщение коммита.
Что еще используется в проекте
Husky
Нужен для кастомизации гит хуков
Гитхаб: https://github.com/typicode/husky
Документация: https://typicode.github.io/husky/#/
Lint-staged
Работает в паре с Husky на коммите, чтобы не валидировать весь проект, а только изменяемые файлы
Гитхаб: https://github.com/okonet/lint-staged
Commitlint
Нужен для валидации сообщения коммита для следования соглашению Conventional Commits
Сайт: https://commitlint.js.org/#/
Гитхаб: https://github.com/conventional-changelog/commitlint
Commitizen
Нужен для стандартизации сообщений коммитов
Сайт: https://commitizen-tools.github.io/commitizen/
Гитхаб: https://github.com/commitizen/cz-cli
Hygen
Генератор кода
Сайт: https://www.hygen.io/
Гитхаб: https://github.com/jondot/hygen