Open brawaru opened 3 years ago
Сделал импорт всех сторонних модулей через директиву @resource
, но к сожалению, TypeScript очень сильно ругается на динамическое использование Preact. Оформил баг-репорт https://github.com/microsoft/TypeScript/issues/45741, буду теперь как Хатико ждать, пока это исправят, иначе никак эти ошибки не устранить: я перепробовал все способы и честно потерял счёт костылей, заколебался — становится тошно от веб-разработки.
Неслыханное количество костылей наконец себя оправдало, я нашёл способ обойти предупреждения TypeScript. Требуется ещё много работы, но большая часть уже выполнена.
За стабильность я не ручаюсь: изменений очень много, но репорты с ошибками из консоли приветствуются.
:warning: У Tampermonkey есть проблемы с проверкой сигнатур для ресурсов с Gist, что может сделать скрипт неработоспособным. Возможно это удастся пофиксить к релизу исправлений, а пока пользователи TM могут убрать решётку (#
) и всё после неё в директивах @resource
.
Три дня спустя и с полностью переписанной с нуля конфигурацией сборки Rollup, а также конфигурацией GitHub Actions, я потихоньку заканчиваю работу над новой версией. Совсем скоро я залью в этот репозиторий, но потребуется переустановка, потому что изменится месторасположение скрипта.
Итак, что поменялось:
esbuild
. Она весьма динамическая, но при этом почти полностью типизирована, что помогает избегать неприятных багов.esbuild
, что существенно сокращает время сборки. Из-за этого код в некоторых местах поменялся, но на работоспособность это не влияет. Вместе с тем удалось сократить размер пака зависимостей, сам пак со скриптом минифицирован не будет.Посмотреть новую кодовую базу можно в моём форке.
Что осталось до релиза:
.tgz
архивы в packages
): это было удобно для сборки локально и быстрой проверки изменений, но не годится для финального репозитория, тем более пакеты не такие уж плохие (всяко лучше части на NPM >_<).
Скрипт был удалён модераторами Greasy Fork за присутствие кода с минификацией (Preact + Preact Hooks), они требуют использовать директиву
@require
для подключения сторонних библиотек, что кажется невозможным в контексте Rollup и Preact, а также нарушает изоляцию. Есть возможность использоватьimport
функцию сmjs
, но она доступна только в современных версиях браузеров. Можно забить на Greasy Fork, тоже вариант.