Найти в Дзене

Правила wb-rules и Мирта: мастер настройки проекта

Пройдя от самых основ и вникая в каждую строчку конфигураций, по материалам прошлых статей мы получили шаблон для комфортной разработки правил wb-rules на TypeScript: Очевидно, что подобный процесс хорош с позиции обучения. Тем не менее, сейчас в проекте много вспомогательного кода, который используется только на этапе разработки. Да и вместо программирования правил приходится интенсивно разбираться с многочисленными настройками. Можно ли это упростить? Безусловно. Если Node.js у вас ещё не установлен, понадобится зайти на его официальный сайт и скачать актуальную версию LTS (на момент написания статьи, это 22.18.0): В процессе установки будет предложен выбор компонентов - отметьте опции «Node.js runtime», «corepack manager» и «Add to PATH». Остальное не понадобится. На следующем экране будет предложено автоматически установить «необходимые» инструменты - мы обойдёмся без них, пропускаем. Открыв терминал (PowerShell) в режиме администратора, выполним в нём команду corepack enable pnpm
Оглавление
Логотип Mirta Framework
Логотип Mirta Framework

Пройдя от самых основ и вникая в каждую строчку конфигураций, по материалам прошлых статей мы получили шаблон для комфортной разработки правил wb-rules на TypeScript:

Правила wb-rules | Умный дом с проводами | Дзен

Очевидно, что подобный процесс хорош с позиции обучения. Тем не менее, сейчас в проекте много вспомогательного кода, который используется только на этапе разработки. Да и вместо программирования правил приходится интенсивно разбираться с многочисленными настройками.

Можно ли это упростить? Безусловно.

Подготовка к работе

Установка Node.js

Если Node.js у вас ещё не установлен, понадобится зайти на его официальный сайт и скачать актуальную версию LTS (на момент написания статьи, это 22.18.0):

Node.js — Download Node.js®

В процессе установки будет предложен выбор компонентов - отметьте опции «Node.js runtime», «corepack manager» и «Add to PATH». Остальное не понадобится.

Выбор компонентов при установке Node.js
Выбор компонентов при установке Node.js

На следующем экране будет предложено автоматически установить «необходимые» инструменты - мы обойдёмся без них, пропускаем.

Предложение установить дополнительные инструменты (пропускаем)
Предложение установить дополнительные инструменты (пропускаем)

Включение менеджера пакетов pnpm

Открыв терминал (PowerShell) в режиме администратора, выполним в нём команду

corepack enable pnpm

После чего проверим статус менеджера пакетов, запросив его версию:

pnpm --version

Если консоль напишет, что невозможно загрузить файл из-за того, что в системе отключено выполнение сценариев, потребуется выполнить ещё одну настройку.

Способ разрешения выполнения сценариев через команду в консоли
Способ разрешения выполнения сценариев через команду в консоли

Самый короткий путь - выполнить от имени администратора команду

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser

Увидеть сделанные изменения позволяет запрос вида

Get-ExecutionPolicy -List

А если необходимо вернуть всё как было, пригодится команда

Set-ExecutionPolicy -ExecutionPolicy Undefined -Scope CurrentUser

Всё то же самое, но через Параметры Windows: в строке поиска ввести «Параметры разработчика», прокрутить список до пункта PowerShell и разрешить в нём выполнение локальных сценариев.

Разрешение локального выполнения сценариев через Параметры Windows
Разрешение локального выполнения сценариев через Параметры Windows

Работа с мастером настройки проектов

Дальше сплошная автоматизация. Перейдя в папку, где будут храниться ваши проекты, запустить в ней терминал и для вызова мастера настройки, ввести команду

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, подключающий через себя пакет basics и содержащий обёртки над стандартными конструкциями правил wb-rules.

Финальным штрихом добавим мастер настройки проекта - при запуске он задаст несколько вопросов, а на основе ответов подберёт необходимое сочетание вышеупомянутых пакетов, конфигураций и шаблонов, после чего создаст готовый к сборке проект по вашим предпочтениям.

Так появился фреймворк под названием «Мирта». Его исходный код полностью открыт и доступен на GitHub:

GitHub - wb-mirta/core: 🚀 Unleash the power of wb-rules with Mirta Framework

Расширенные возможности фреймворка находятся в активной разработке, поэтому пакет mirta, как и mirta/testing в настоящее время документированы не в полном объёме - это область значительных перемен в ближайшем будущем.

Развёртываемый мастером настройки стартовый проект сейчас позволяет создавать стандартные правила wb-rules на языке TypeScript.