Skip to content

Latest commit

 

History

2,211 Commits

Folders and files

Repository files navigation

Essence Constructor Frontend

Метамодельный UI-конструктор: страницы и виджеты задаются конфигурацией с бэкенда (IBuilderConfig), фронт резолвит type в React-компонент.

Yarn workspaces, сборка — Rsbuild. React 18.3, MUI 7. Версия 3.1.0.

Миграция на React 19: todo/react-19.md.

Зависимости

  • yarn >= 1.22
  • node >= 20
yarn install

Локальная разработка собирает constructor-share и constructor-classes из исходников (алиасы в Rsbuild), отдельно собирать пакеты не нужно.

Пакеты

Workspaces:

  1. essence-constructor-website — SPA-хост (роутинг, bootstrap, Module Federation host essence_core)
  2. essence-constructor-classes — виджеты конструктора (GRID, IFIELD.*, PANEL, APPLICATION, …)
  3. essence-constructor-share — ядро: сторы, формы, request, parser, реестр компонентов
  4. essence-constructor-eslint — общий ESLint-конфиг
  5. essence-constructor-package-builder — сборка/деплой публикуемых пакетов

Вне workspaces (для внешних модулей):

  1. create-constructor-module — скелет модуля: yarn create @essence-community/constructor-module <name>
  2. essence-constructor-scripts — сборка/zip внешнего модуля

Разработка

Из корня:

yarn start

Приложение: http://localhost:3000.

Другие режимы:

  • yarn start-localhost — .env.localhost (gate /api, настройки MTGetSysSettings)
  • yarn start-mock — .env.mock

Прокси задаётся в rsbuild.config.ts:

  • /api → http://localhost:9020/
  • /api_module → http://localhost:9020/
  • /notification → http://localhost:9020/ (WebSocket)

Переопределение: переменная PROXY (JSON-массив {path, options}).

Переменные окружения

Файлы: packages/@essence/essence-constructor-website/.env*. Порядок загрузки: .env.${PROJECT} → .env.${NODE_ENV}.local → .env.local → .env.${NODE_ENV} → .env.

Переменная По умолчанию Описание
PUBLIC_URL / Базовый путь статики и роутера. Для подкаталога: /app
REACT_APP_PUBLIC_URL как PUBLIC_URL basename React Router, должен совпадать с PUBLIC_URL
REACT_APP_SETTINGS /assets/scripts/settings.js Скрипт настроек в index.html. На localhost: /api?action=sql&query=MTGetSysSettings&js=true
REACT_APP_COMMIT_ID DEV Хеш коммита; если DEV — из git log
REACT_APP_BRANCH_NAME 3.1.0 Версия/ветка сборки (version.json)
REACT_APP_BRANCH_DATE_TIME no-valid Дата коммита; если no-valid — из git log
PROJECT — Выбор .env.${PROJECT} (localhost, mock)
PROXY — JSON [{path, options}] вместо прокси на :9020

Полный список, включая GATE_URL и переменные модулей: ENV.md.

Сборка для деплоя

yarn build

Собирается constructor-website, затем build копируется в корень репозитория. На сервер нужно перенести корневую папку build. Это SPA: несуществующие пути должны отдавать index.html. Подробнее — DEPLOY.md.

Публикация constructor-share (отдельно от приложения):

yarn workspace @essence-community/constructor-share run build

Проверки

  • yarn lint / yarn lint:fix
  • yarn tscheck:classes / yarn tscheck:share / yarn tscheck:website
  • yarn test — Jest + @testing-library/react
  • yarn CI — tsc (classes + share) и eslint; так же запускается во внешнем Jenkins

Документация

  1. MODULE.md — внешние модули и метамодель
  2. APPLICATION.md — мультиприложения
  3. REDIRECT.md — внешний переход /redirect/:b64
  4. KEYCLOAK.md — авторизация Keycloak
  5. ENV.md — переменные окружения
  6. PROXY.md — прокси в разработке
  7. DEPLOY.md — деплой SPA
  8. ATTRIBUTES.md — атрибуты классов
  9. STYLEGUIDE.md — соглашения по коду
  10. TEST.md — Jest / Testing Library
  11. todo/react-19.md — миграция на React 19
  12. UPLOAD_FILES.md — загрузка файлов
  13. TRANSIT_TO_SITE.md — переход в отчёты (session/token)
  14. FIELD_IMAGE.md — поле изображения

Releases

Packages

Used by

Contributors

Languages