npm install - устанавливаем зависимости
npm run start:dev - запуск режима разработки(сборка webpack)
npm run start:dev:vite - запуск режима разработки(сборка vite)
npm run start
- запуск проекта (front) на webpack dev servernpm run start:vite
- запуск проекта (front) на vitenpm run start:dev
- запуск проекта (front) на webpack dev server + back (json server)npm run start:dev:vite
- запуск проекта (front) на vite + back (json server)npm run start:dev:server
- запуск back (json server)npm run build:prod
- сборка в prod режиме(минимизирован)npm run build:dev
- сборка в dev режимеnpm run lint
- проверка файлов .ts линтером eslintnpm run lint:ts:fix
- исправление файлов .ts линтером eslintnpm run lint:scss
- проверка файлов .scss style линтеромnpm run lint:scss:fix
- исправление файлов .scss style линтеромnpm run test:unit
- запуск unit тестов jestnpm run test:ui
- запуск ui скриншотных тестов lokinpm run test:ok
- подтверждение новых скриншотовnpm run test:ui:ci
- запуск скриншотных тестов в CInpm run test:ui:report
- полный отчет по скриншотным тестамnpm run test:ui:html
- полный HTML отчет по скриншотным тестамnpm run storybook
- запуск storybooknpm run storybook:build
- запуск storybook buildnpm run prepare
- запуск пре-коммит хуковnpm run generate:slice
- скрипт генерирует слайс
Проект написан по методолгии FSD
Ссылка на документацию - feature sliced design
Для переводов используется библиотека i18next Файлы для перевода хранятся в public/locales Для комфортной работы можно установить плагин i18n Ally
Используется 4 вида тестирования:
- unit test jest -
npm run test:unit
- тесты компонентов react testin library -
npm run test:unit
- скриншотное тестирование loki -
npm run test:ui
- e2e тестирование Cypress -
npm run test:e2e
Подробнее о тестах - документация
Используется специальный плагин для проверки и исправления соответствия импортов методологии FSD
В нем 3 основных правила:
- path-checker - запрещает использовать абсолютные пути
- layer-imports - проверяет корректность импортов
- public-api-imports - разрешает импорт только из index.ts
Запуск линтеров:
npm run lint
- проверка файлов .ts линтером eslintnpm run lint:ts:fix
- исправление файлов .ts линтером eslintnpm run lint:scss
- проверка файлов .scss style линтеромnpm run lint:scss:fix
- исправление файлов .scss style линтером
Каждый компонент проекта можно посмотреть в storybook. Запуск по команде:
npm run storybook
Сторикейс описан в файле .stories.tsx рядом с компонентом. Пример:
import { ComponentStory, ComponentMeta } from '@storybook/react';
import { Code } from './Code';
export default {
title: 'shared/Code',
component: Code,
argTypes: {
backgroundColor: { control: 'color' },
},
} as ComponentMeta<typeof Code>;
const Template: ComponentStory<typeof Code> = (args) => <Code {...args} />;
export const Primary = Template.bind({});
Primary.args = {
text: 'function sum (a,b) {\n return a + b;\n}\n\nconsole.log(sum(1,2)); // Вернет 3',
};
Конфигурация хранится в в /config
- /config/babel -babel
- /config/build - webpack
- /config/jest - jest
- /config/storybook - storybook
В папке scripts
хранятся все скрипты для упрощения разработки проекта
В .husky лежит конфиг для проверки пре-коммит хуками
В ./github/workflows лежит конфигурация github actions, в СI прогоняются все виды тестов
Используется redux toolkit, для запросов на сервер RTKQuery.
Для асинхронного подкючения редьюсеров используется DynamicModuleLoader