Пройдя от самых основ и вникая в каждую строчку конфигураций, по материалам прошлых статей мы получили шаблон для комфортной разработки правил wb-rules на TypeScript:
Очевидно, что подобный процесс хорош с позиции обучения. Тем не менее, сейчас в проекте много вспомогательного кода, который используется только на этапе разработки. Да и вместо программирования правил приходится интенсивно разбираться с многочисленными настройками.
Можно ли это упростить? Безусловно.
Подготовка к работе
Установка Node.js
Если Node.js у вас ещё не установлен, понадобится зайти на его официальный сайт и скачать актуальную версию LTS (24.12.0):
В процессе установки будет предложен выбор компонентов - отметьте опции «Node.js runtime», «corepack manager» и «Add to PATH». Остальное не понадобится.
На следующем экране будет предложено автоматически установить «необходимые» инструменты - мы обойдёмся без них, пропускаем.
Включение менеджера пакетов pnpm
Открыв терминал (PowerShell) в режиме администратора, выполним в нём команду
corepack enable pnpm
После чего проверим статус менеджера пакетов, запросив его версию:
pnpm --version
Если консоль напишет, что невозможно загрузить файл из-за того, что в системе отключено выполнение сценариев, потребуется выполнить ещё одну настройку.
Самый короткий путь - выполнить от имени администратора команду
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
Увидеть сделанные изменения позволяет запрос вида
Get-ExecutionPolicy -List
А если необходимо вернуть всё как было, пригодится команда
Set-ExecutionPolicy -ExecutionPolicy Undefined -Scope CurrentUser
Всё то же самое, но через Параметры Windows: в строке поиска ввести «Параметры разработчика», прокрутить список до пункта PowerShell и разрешить в нём выполнение локальных сценариев.
ℹ️ Примечание: если под обычным пользователем и в консоли VSCode без прав администратора pnpm работать отказывается, может потребоваться перезагрузка компьютера - чтобы корректно применились изменения в переменной окружения PATH.
Работа с мастером настройки проектов
Дальше сплошная автоматизация. Перейдя в папку, где будут храниться ваши проекты, запустить в ней терминал и для вызова мастера настройки, ввести команду
pnpm create mirta
Подробнее о процессе рассказано в видео:
Путь к фреймворку
Разделим созданный прежде шаблон wb-rules-typescript на пакеты, которые в пределах своей версии будут оставаться неизменными при переходе от одного проекта к другому.
Каждому такому пакету дадим название:
➡️ @mirta/basics
Вспомогательные функции вроде debounce и throttle, событийная модель и другие самодостаточные штуки, минимальный аналог библиотеки lodash, пригодный для работы на контроллере Wiren Board.
➡️ @mirta/globals
Определения типов для TypeScript, этот пакет содержит описание конструкций wb-rules.
➡️ @mirta/polyfills
То, без чего современный код не будет работать на ECMAScript 5.
➡️ @mirta/store
Хранилище состояний, аналог Vue Pinia и альтернатива для module.static в модулях правил wb-rules.
➡️ @mirta/testing
Инструменты для тестирования правил, такие как имитатор запуска на контроллере.
➡️ @mirta/rollup
Сборщик проекта. Именно он знает, как собрать понятный контроллеру код (и трансформирует скачиваемые пакеты в модули wb-rules-modules, но об этом позже).
➡️ @mirta/tsconfig
Конфигурация TypeScript тоже является отдельным пакетом. Она копируется из проекта в неизменном виде, поэтому проще переложить её актуализацию на фреймворк, чем заниматься этим самостоятельно.
Наконец, главный пакет фреймворка - головной модуль mirta, подключающий через себя пакет @mirta/basics и содержащий обёртки над стандартными конструкциями правил wb-rules.
Финальным штрихом добавим мастер настройки проекта - при запуске он задаст несколько вопросов, а на основе ответов подберёт необходимое сочетание вышеупомянутых пакетов, конфигураций и шаблонов, после чего создаст готовый к сборке проект по вашим предпочтениям.
Так появился фреймворк под названием «Мирта». Его исходный код полностью открыт и доступен на GitHub:
Расширенные возможности фреймворка находятся в активной разработке, поэтому пакет mirta, как и @mirta/testing в настоящее время документированы не в полном объёме - это область значительных перемен в ближайшем будущем.
Развёртываемый мастером настройки стартовый проект сейчас позволяет создавать стандартные правила wb-rules на языках JavaScript и TypeScript.