- Опубликовано
runtime‑сборка пошла жёстко не по плану
- Автор

- Имя
- ElKornacio
- Telegram
ElKornacio11113 подписчиков369 постов
в общем, с runtime-сборкой всё пошло жестко не по плану.
esbuild завёлся с полпинка, и рендеринг runtime-скомпилированного react-компонента у меня был готов ещё часа 4 назад.
казалось бы, что может пойти не так, остаётся ведь всего лишь генерить tailwind-стили?
дело в том, что tailwind v4 использует module resolution без указания main в package.json, что ломает сборку pkg (утилиты, которая делает single-binary executable с Node.js).
решил завести tailwind v4 в браузерной среде. сборка с tailwind состоит из 4 частей:
1. базовая компиляция css-файла (того самого, который `@import 'tailwindcss';`)
2. парсинг всех исходников проекта в поисках строк, которые выглядят как tailwind utility классы (типа md:text-xs в коде вашего компонента). эти строки называются "кандидаты".
3. далее, tailwind фильтрует кандидатов, оставляя только валидные utility-классы. он компилирует изначальный css + все utility-классы, которые он нашёл у вас в исходниках. на выходе получается intermediary css.
4. далее, tailwind швыряет intermediary css в lightningcss, и тот уже превращает его в финальный css файл.
так вот, пункт 2 делается через @tailwind/oxide - Rust-тула, который очень быстро сканирует код вашего проекта. и он не только не opensource, но и не имеет wasm-версии для браузерной среды.
пункт 4 делается через lightningcss - тоже Rust-based тулы, но у неё, к счастью, есть wasm-версия.
в целом, пункт 2 можно заменить на utility classes extractor из tailwind v3, и оно будет работать.
но мне показалось это лютой грязью, и я захотел перейти на tailwind v3.
но вот беда - shadcn перешёл на tailwind v4 довольно плотно, и legacy-доки никто не обновляет, и написана там дичь. установить shadcn-компоненты для tailwind v3 - задачка довольно нетривиальная.
в общем, похоже, придется таки заводить tailwind v4 с extractor'от tailwind v3 в браузер.
и тут возникает вопрос... а зачем тогда мне вообще будет нужен Node.js? мб избавлюсь от него, сборка станет ещё легче.
Предыдущий пост
- Опубликовано
сборка tsx tailwind и подключение к postgres

Из подборки #bug
- Опубликовано
проблемы Codex: ненужный код и баги
- Опубликовано
описание скилла в SKILL.md

- Опубликовано
гарантированный workflow с условными actions

- Опубликовано
debug режим: генерация гипотез багов

- Опубликовано
Как использовать Antigravity в РФ?

- Опубликовано
⚡️ Google Antigravity IDE: обзор, баги, сравнение

Свежие посты
- Опубликовано
всё ещё не выздоровел, но эту новость не могу...

- Опубликовано
чет разболелся, поэтому тезисно по шуму и...
- Опубликовано
проблемы Codex: ненужный код и баги
- Опубликовано
ребята, у меня большая просьба!
- Опубликовано
спасибо вайбкодинг за помощь в продажах
- Опубликовано
в общем, расскажу, зачем купил эти смарт-часы.
- Опубликовано
DIY смарт-колонка и часы ESP32 от Деда Мороза

- Опубликовано