-
Notifications
You must be signed in to change notification settings - Fork 2
Frontend
NB: Перед работой необходимо установить хуки гита (выполнить
yarn i
в корневом проекте).
- Yarn v1.9.4;
- Node v8.11.1 (+ npm v5.6.0);
- Последний WebStorm или Visual Studio Code;
Проект мультиплатформенный (должен работать на Windows, Linux и MacOS без костылей вроде Ubuntu for Windows).
Нужно установить хуки для гита.
Нужно сконфигурировать гит.
На Windows должны быть установлены windows-build-tools.
Нужно отключить safe write в IDE.
В браузере должны быть установлены react-devtools, apollo-client-devtools.
- Плагины:
- IDE Settings Sync - синхронизация настроек, специфичных для пользователя;
- Styled Components;
- JS GraphQL;
- .ignore - поддержка .gitignore;
- Markdown Navigator;
- Jenkins Control Plugin - работа с Jenkins из IDE;
- PlantUML integration;
-
Managing Tasks and Contexts:
- Переключение между задачами с сохранением контекста и созданием веток
assignee = currentUser() and status in (New, Reopened) or issueKey = ORG-564 or issueKey = ORG-9 or issueKey = ORG-358 order by priority
- Изменение статуса задач
- Учет и загрузка времени
- Переключение между задачами с сохранением контекста и созданием веток
NB: Раздел не завершен.
- Плагины:
-
Graphql. Валидация и подсказки в
gql
-тегах все равно не работают, ждем развития плагина.
-
Graphql. Валидация и подсказки в
NB: Проект еще не настроен для VS Code
- Они больше всего используются в компании, и проект уже настроен для них (так, в WebStorm уже будут включены линтеры и FileWatcher для
prettier
, а также настроена валидация сообщения коммита).
NB: Необходимо использовать
yarn i
вместоyarn
илиyarn install
-
yarn i
: сокращение дляyarn install --frozen-lockfile
; -
yarn a
: сокращение дляyarn add -E -D
; -
yarn r
: сокращение дляyarn remove
.
-
yarn start
: установить зависимости, запустить watcher генерации типов apollo, запустить дев-сервер и открыть браузер. -
yarn start:no-install
: пропустить установку зависимостей. Использовать, если node_modules не должны изменяться (например, при использованииnpm link
). -
yarn analyze
: Проанализировать собранный для прода бандл.
-
yarn build
: собрать frontend вdist/
; -
yarn build:final
: также удалить все дев-файлы (запускать перед сборкой frontend-server).
NB: Эти скрипты включены в скрипты разработки и сборки
-
generate:apollo
: сгенерировать все, связанное с apollo (схему, конфиг для JS GraphQL и типы). Принимает аргумент--watch
(только для типов); -
generate:apollo-types
: сгенерировать типы apollo. Принимает аргумент--watch
.
NB: Prettier обрабатывает код перед коммитом.
-
prettier:all
: форматировать все, что возможно.
NB: Код проверяется перед коммитом.
-
lint:js
: eslint; -
lint:ts
: tslint и tsc (проверка типов); -
lint:css
: stylelint.
Используется Hot Module Replacement (HMR), что позволяет писать код и сразу же видеть результат (без перезагрузки страницы). Это работает для компонентов приложения и для reducer'ов. Для остального кода страница автоматически обновится. HMR не работает для кода в конструкторе и декорированных функций (в частности, autobind
). В таких случаях надо обновлять страницу вручную.
Используются source maps.
Код фронтенда пишется исключительно на typescript.
Перед коммитом:
- staged-файлы проверяются необходимыми линтерами (tslint, stylelint, eslint);
- staged-файлы обрабатываются
prettier
; - все файлы проверяются tsc (типы, неиспользуемые переменные);
- проверяется соответствие yarn.lock и package.json.
- проверяется отсутствие в package.json обычных зависимостей (все должны быть dev).
Это происходит автоматически с помощью хуков гита (lint-staged). В критических ситуациях хуки можно отключить с помощью --no-verify
(использовать с осторожностью).
- Практика показала, что вывод консоли часто игнорируется, и в итоге ошибки нарастают, как снежный ком.
- Линтеры и
prettier
выполняются только для staged-файлов. - Предотвращаются бессмысленные коммиты
AB-123: Fix linter errors
. - Ошибки можно исправлять, находясь в контексте изменений, которые их вызвали.
- Соответствие yarn.lock и package.json гарантирует, что все зависимости добавляются через yarn.
Спасибо за чтение документации ✨
- Home
- Backend
- Frontend Server
-
Frontend
- Структура компонента приложения
- Структура проекта
- Правила именования
- Конфиги
- Источники данных
- Роутинг
- Иконки и картинки
- Шрифты
- Изменение тегов HEAD
- Адаптивность
- Сторонний CSS
- Favicon
- Cache Busting
- Code Splitting
- Обработка ошибок
- Общие компоненты
- Полезные компоненты в других проектах
- Live Templates
- Apollo и REST