В этом шаблоне преднастроен
- тайпскрипт
- юнит тесты
- отображение документации для хуков
- автоматический lint
- проверка кода перед коммитом на наличие ошибок
- проверка коммитов через конвенцию коммитов
- билд проекта с добавлением типов
- автоматическая генерация changelog на основе коммитов
После того как сделали форк на основе этого шаблона
- package.json
- Нужно поменять название, описание проекта, ссылки, ключевые слова
- README.md
- Нужно изменить название пакета, описание, цель, задачи, все ссылки, используемые библиотеки, примеры использования
- oce.json
- Поменять название пакета
После этого можно начать разработку. Несколько замечаний
yarn start- запуск сервера для разработки (styleguidist)yarn build- сборка проекта для документации (styleguidist)yarn test- запуск юнит тестов (через jest)yarn lint- запуск linterа (через eslint)yarn prettier- форматирование кода (через prettier)yarn build:babel- сборка проекта для публикацииyarn tsc:dts- добавление d.ts в папку distyarn publish- публикация проекта в npmyarn release- автоматическая генерация changelog с созданием тега
- Пишем на тайпскрипт. Все кастомные типы и интерфейсы записываем в файл
src/types/index.ts - В файле
styleguide.config.jsпомещаем настройки для компонентов в переменнойsections - Сейчас наша структура каталога
src:components- сожержимое этой папки билдится для документации и для библиотеки- папки компонентов
hooks- эта папка не билдится в итоговую библиотеку, она нужна для того чтобы отображать документацию к хукам, подробнее будет описано ниже
hooks(папка с хуками, разрешение файлов.ts)utils- хелперы и доп. функции
- Создаем наши компоненты мы в папке
src/components - Так как тут используется typescript, вместо proptypes используем типы и интерфейсы для параметров, а jsdoc для документации самого компонента
- Пишем хук в папке
src/hooks - Не забываем добавлять именованный экспорт в файл
src/hooks/index.ts - Если нам нужно добавить в документацию этот хук то добавляем файл с таким же именем в папку
src/components/hooks. Это будет документация к этому хуку. Формат файла:.tsx. Внутри создаем пустой компонент и прописываем документацию.
Пример:
import React from 'react'
/**
* Returns the current scroll position of the window.
*/
export default function useWindowScrollPosition() {
return <></>
}- Все тесты мы создаем в папке
__tests__ - Пишем на
js. Если нужна поддержка тайпскрипта, то нужно дополнительно настроитьts-jestвjest.config.js - сейчас там три каталога:
__tests__/components- тесты для компонентов__tests__/hooks- тесты для хуков__tests__/utils- тесты для доп функций
- сейчас не настроен их экспорт в корневом файле
src/index.tsпо этому для использования нужно писать такimport { } from '@texttree/template-rcl/utils'
- Обычно мы настраиваем
netlifyдля публикации документации по библиотеке. После этого надо проверить ссылки в README.md и добавить ссылку на странице проекта в github. - Обычно для проверки библиотеки мы используем yalc
- Если вы хотите проверить, что именно отправляется в npm то один из вариантов, можно запустить команду
yarn prepublishOnly && yarn pack - Чтобы выпустить новую версию, нужно запустить команду
yarn release. На основе коммитов он сам определит, минорная сейчас версия или мажорная. После этой команды он предложит отправить в github новый тег и запуститьyarn publishдля публикации в npm - После этого надо не забыть добавить новую версию и дату в файл
oce.json
- если используется какой-то современный синтаксис, то надо будет в
babel.config.jsonдобавить параметры для@babel/preset-envс использованиемcore-js - в определенных случаях возможно придется раскомментировать строку
"lib": ["dom"],вtsconfig.jsonи добавить дополнительные библиотеки - если нужно собирать стили или какие-то доп форматы файлов, то может быть придется настроить
webpackConfigвstyleguide.config.js. Важно заметить что это настройка только для styleguidist.