"dev"
: запуск dev сервера приложения"build:development"
,"build:production"
,"build:staging"
: билд приложения в соответствующем режиме"preview"
: старт последней версии собранного приложения"https-preview"
: старт последней версии собранного приложения в https режиме"lint"
: запуск линтера без автофикса"lint:fix"
: запуск линтера и автофикса"check-types"
: проверка типов TS"test"
: запуск unit тестов"test:ci"
: запуск unit тестов для CI"commit"
: коммит зарегестрированных в гит изменений"generate-images"
: генерация responsive изображений"ac"
: комлексная команда которая запустит линтер, проверит типы, добавит все изменения в гит и сделает коммит
- cebab-case, dot notaion
- слова разделяются дефисом
- все маленькие буквы
- названия файла . тип файла . (ts | scss) ...
- File types
.hook, .service, .util, .helper, .component, .types, .model, .config, .page
- Для файлов констант и enums
**scope**.constants.ts
- Все импорты между модулями делаем через alias, при необходимости можно добавить новые alias в проект
- Для идентичности проектов
React
иNext
пришлось выбрать вариант наименования страниц где в каждой папке со страницей лежит файлindex.page.ts
- Используется методология, которая не советует разделять файлы по их типам, следовательно если у вас есть хук
use-create-user
не надо создавать папкуentities/user/hooks
, а в ней файлuse-create-user.hook.ts
. Правильно будет создать файлuse-create-user.hook.ts
в папкеentities/user/model
илиfeatures/create-user/model
- Обязательно Используем реэкспотры для реализации public api
- Не используем
any
, используемas
иsatisfies
где необходимо - Каталог
pages
: В каждой папке со страницей должен присутстовать файлindex.page.ts
в котором находится сам компонент страницы => примерpages/about/index.page.ts
- Добавляем изображения в папку
public/assets/**
- Используем команду
npm run generate-images
- Используем тэг
<Image />
со свойствомresponsive=true
Пример:
import { Image } from "@shared/ui/image";
<Image
alt=""
sizes={{
lg: '40rem',
}}
responsive
src="/assets/random/random.jpg"
loading="lazy"
/>
- Добавляем иконку в
src/shared/ui/icon/
- Добавляем импорт в файл
src/shared/ui/icon/icon.component.tsx
Пример:const search = lazy(() => import('./search.svg')) const ICONS_MAP = { search, } as const
Пример:
import { IconComponent } from "@shared/ui/icon";
import { Suspense } from 'react'
<Suspense>
<IconComponent
alt="search icon"
name="search" />
</Suspense>
- 🍞react-hoat-toast
Используется для отображения нотификаций
Документация