1. Инструменты, Git и старт проекта: Vite, ESLint, архитектура
Инструменты, Git и старт проекта: Vite, ESLint, архитектура
Зачем это нужно
В реальной работе фронтенд-разработка почти всегда начинается не с написания компонентов, а с настройки среды:
В этой статье мы соберём фундамент под весь курс: создадим проект на Vite (React + TypeScript), подключим ESLint, заведём Git-репозиторий и заложим понятную архитектуру папок под будущие темы (state-менеджмент, TanStack Query, формы).
Что установить перед стартом
Нам нужны инструменты, которые одинаково хорошо работают на Windows, macOS и Linux.
pnpm, можно npm)Ссылки на официальные источники:
Проверка установки
В терминале выполните:
Если pnpm не установлен:
Git: минимальный рабочий процесс
Git — это система контроля версий: она хранит историю изменений и позволяет безопасно экспериментировать.
Создаём репозиторий
Базовые правила коммитов
Коммит — это логически завершённый набор изменений. Хорошая привычка для обучения и для работы:
Примеры сообщений:
init project with Viteadd eslint configsetup app folder structureЧто обязательно добавить в .gitignore
Если вы создаёте проект через Vite, нужный .gitignore обычно будет сгенерирован автоматически. Проверьте, что там есть хотя бы:
node_modulesdist.env (если используете)Старт проекта на Vite (React + TypeScript)
Vite — современный сборщик и dev-сервер. Он быстро стартует, быстро обновляет изменения и даёт простой путь к сборке.
Официальная документация:
Создание проекта
Внутри папки репозитория выполните:
Запуск:
Полезные команды Vite-проекта:
pnpm dev — запуск dev-сервераpnpm build — сборка в папку distpnpm preview — локальный просмотр production-сборкиПервый коммит
После успешного запуска сделайте коммит:
Настройка TypeScript: режим строгости и ожидания
TypeScript в шаблоне уже подключён. Наша цель — не усложнить конфиг, а договориться о принципах:
Проверьте tsconfig.json. В большинстве случаев полезно иметь включённым strict: true. Если в вашем шаблоне он отключён — включите и зафиксируйте изменения отдельным коммитом.
ESLint: защита качества кода на входе
ESLint — это линтер: инструмент, который анализирует код и подсвечивает потенциальные ошибки и проблемные паттерны.
Официальная документация:
Что именно будет делать ESLint в нашем проекте
Важно различать:
В этом курсе мы начинаем с ESLint как обязательной базы.
Установка и конфигурация ESLint для React + TS
Vite-шаблон часто уже содержит ESLint-зависимости, но конфигурация может отличаться. Приведём рабочий вариант на современном формате ESLint Flat Config.
Установите зависимости:
Создайте файл eslint.config.js в корне проекта:
Добавьте скрипт в package.json:
Запуск линтера:
Сделайте коммит:
Алиасы импортов: меньше ../../.., больше читаемости
Когда проект растёт, относительные импорты становятся хрупкими. Например, перенос файла ломает половину импортов.
Мы настроим алиас @ на папку src, чтобы писать так:
import { Button } from "@/shared/ui/Button";Настройка Vite
Откройте vite.config.ts и добавьте resolve.alias:
Настройка TypeScript
Откройте tsconfig.json (или tsconfig.app.json — зависит от шаблона) и добавьте:
Проверьте, что IDE перестала ругаться на импорты с @.
Архитектура проекта: как разложить код по папкам
Архитектура в рамках фронтенд-проекта — это договорённость, куда складывать код, чтобы:
Мы используем простую слоистую структуру, совместимую с ростом проекта и будущими темами (state, запросы, формы).
!Дерево папок и назначение слоёв
Слои и ответственность
app — сборка приложения: роутинг, провайдеры, инициализация, глобальные стилиpages — страницы (то, что обычно связано с маршрутом)features — пользовательские действия и сценарии (например, логин, поиск, фильтры)entities — сущности предметной области (например, user, project, task)shared — переиспользуемые вещи без привязки к домену (UI, утилиты, базовые хуки)Рекомендуемая структура src
| Папка | Что внутри | Примеры |
|---|---|---|
| src/app | входные точки и провайдеры | App.tsx, main.tsx, провайдеры стора/запросов |
| src/pages | страницы | HomePage, ProfilePage |
| src/features | сценарии пользователя | auth/login, tasks/filter |
| src/entities | доменные сущности | user, task |
| src/shared | базовые переиспользуемые модули | ui, lib, api |
Практическое правило: близость к месту использования
shared.Это помогает не превращать shared в “свалку всего на свете”.
Создаём папки и минимальные файлы
Создайте структуру:
Минимальная точка входа уже есть (src/main.tsx). На этом этапе достаточно зафиксировать структуру коммитом:
Подготовка к будущим темам курса
Чтобы следующие темы легли без переделок, заранее держите в голове:
app через провайдер/инициализациюapp (QueryClientProvider), а запросы удобно группировать рядом с сущностями в entities или в shared/apifeatures (конкретные формы) и использует переиспользуемые поля из shared/uiИтог
Вы создали базу, на которой будем строить весь курс:
@Дальше будем развивать приложение функционально, постоянно опираясь на эти инструменты: Git для аккуратной истории, линтер для качества, архитектуру для масштаба.